1

私が持っているいくつかのforループの終わりにファイルを開いて書き込もうとしています。ただし、「出力」の未定義のプロンプトが表示されます。(以下のコードを参照)

書き込みモードでファイル「output.txt」を開くと同時に、出力が何であるかを宣言していませんか?

for X in Y
    ....
    output = open(output.txt, 'w')
    output.writelines(lines)
    output.close()

これは正しく機能しているはずですか?私の構文は間違っていますか?または、出力= forループの外側で開くと宣言する必要がありますか?

注:Python 2.7.3

回答:ありがとうございました。「output.txt」ではなくoutput.txtを開こうとしたため、Pythonは私の宣言を理解できませんでした。

4

5 に答える 5

3

ファイル名output.txtは文字列ですが、引用符で囲んでいません。したがって、未定義のoutputPythonが不平を言うのは、呼び出しの可変結果ではopen()なく、呼び出し内の不適切に引用された文字列open()です。

openプロパティにアクセスしているオブジェクトが呼び出されたと誤解されますtxt

output = open('output.txt', 'w')
于 2012-12-07T21:42:49.040 に答える
1

output.txt引用されていません。したがって、文字列リテラルとしてではなく、Pythonでは変数として表示されます。

そのはず:

output = open("output.txt", 'w')

さらに、以下を使用してwithいる場合は、構造を使用することをお勧めしpython >= 2.5ます。

with open("output.txt", 'w') as output:
    output.writelines(lines)

何が起こっても、リソースのリークを回避するためにファイルの閉鎖を自動的に処理するためです。

于 2012-12-07T21:46:19.830 に答える
0

output = open(output.txt, 'w')

エラーは、output.txtが文字列ではないためだと思います。試す

output = open('output.txt', 'w')

于 2012-12-07T21:43:11.050 に答える
0

「output.txt」を引用符で囲むのを忘れました。

于 2012-12-07T21:43:13.350 に答える
0

エラーはさておき、意図したとおりに動作していない可能性があります。書き込みモードでファイルを開いて書き込むと、そのファイルが完全に置き換えられます。そのファイルにループで何かを追加したい場合は、追加モードで開きます。

output = open("output.txt", "a")
for x in y:
    output.writelines(x) #or whatever you're writing
output.close()
于 2012-12-07T21:44:37.547 に答える