2016-05-19 2 views
1

でNamedTemporaryFileを作るときとValueErrorを取得するには、既存の質問を検索してこの解決策を見つけていない、ここに行く:のpython

新しいっぽいののpythonに。 tempfileパッケージを使用して一時ファイルを作成しようとしています。ここでValueErrorで失敗しているコードの行である:私は私のスクリプトを実行したときに

(temp_file, self.bucket) = tempfile.NamedTemporaryFile(suffix='.py', prefix='Custom_', dir=[mydir], delete=False)

私はこれとValueErrorを取得しています:

ValueError: need more than 0 values to unpack

なぜ?

+0

Sidenote(既存の回答は主な問題をカバーしています):あなたは本当に 'dir = [mydir]'を渡しましたか、 '[mydir]'はプレースホルダーであると思いますか? 'dir'を' list'として渡すことはありません。これは括弧で囲まれたものです。 – ShadowRanger

+0

これは単なるプレースホルダです。私はそこに有効なdirパスを持っていました。 :) @ShadowRanger –

答えて

2

tempfile.NamedTemporaryFile()ファイル名は返さず、ハンドルのみが返されます。ファイル名を取得するには、name属性にアクセスする必要があります。

+0

私はその部分を理解していますが、私はあなたが 'tempfile.NamedTemporaryFile()'の前に '(temp_file、self.bucket)'を持っていないことを意味すると思いますか?たぶん代わりに 'self.bucket'ですか? –

+0

Nvm、^は私の問題を解決しました。ありがとう! –

+1

混乱はおそらく 'mkstemp'が' TemporaryFile'のドキュメントによって繰り返し言及され、 'mkstemp'がハンドルと名前を返すためです。しかし、 'TemporaryFile'と' NamedTemporaryFile'は 'mkstemp'のような低レベルのAPIではなく、' open'のような戻り値を持つより高いレベルの型です。 – ShadowRanger