2
我使用Click來傳入一個文件名的參數。這個文件名是爲了被ConfigParser.SafeConfigParser.read()
用來讀取ini文件。不幸的是,點擊傳入文件對象,read()
無法處理。帶有文件對象而不是字符串的SafeConfigParser.read()
有沒有辦法允許read()
採取文件對象或可以點擊被配置爲不打開文件(但仍然執行檢查)?
我使用Click來傳入一個文件名的參數。這個文件名是爲了被ConfigParser.SafeConfigParser.read()
用來讀取ini文件。不幸的是,點擊傳入文件對象,read()
無法處理。帶有文件對象而不是字符串的SafeConfigParser.read()
有沒有辦法允許read()
採取文件對象或可以點擊被配置爲不打開文件(但仍然執行檢查)?
注意:我發現ConfigParser
具有專門用於讀取文件句柄的方法。它被稱爲readfp(self, fp, filename=None)
。這可能是一個更好的答案。如果有人應該對這個解決方案感興趣,我會在下面留下我的舊答案。
您可以使用name
屬性從文件句柄獲取文件名。這可以傳遞給ConfigParser.SafeConfigParser.read()
。
小例子只是打印出的文件名:
import click
@click.command()
@click.argument('filehandle', type=click.File('rb'))
def print_filename(filehandle):
print "File name: %s" % filehandle.name
if __name__=="__main__":
print_filename()
我希望針對該文件並不需要打開兩次的解決方案。 – orange
我剛纔看到'ConfigParser'有一個專門讀取文件句柄的方法。它被稱爲'readfp(self,fp,filename = None)'。它不打開文件,所以它應該工作。 –