2017-02-11 10 views
2

私はClickを使用してファイル名の引数を渡しています。このファイル名は、がiniファイルを読み取るために使用するためのものです。残念ながら、Clickはread()が処理できないファイルオブジェクトを渡します。文字列ではなくファイルオブジェクトでSafeConfigParser.read()

read()にファイルオブジェクトを取得させる方法はありますか?クリックしてファイルを開くことはできませんが、まだチェックを行いますか?

答えて

0

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() 
+0

私は、ファイルが二回開く必要ないために解決を期待していました。 – orange

+0

私は 'ConfigParser'にファイルハンドルを具体的に読み取るためのメソッドがあることを知りました。 'readfp(self、fp、filename = None)'と呼ばれます。ファイルを開かないので、動作するはずです。 –

関連する問題