1

我试图在我拥有的一些 for 循环结束时打开并写入文件。但是,我得到一个“输出”未定义的提示。(见下面的代码)

我不是在以写入模式打开文件“output.txt”的同时声明什么输出吗?

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

这应该可以正常工作吗?我的语法错了吗?或者我必须在 for 循环之外声明 output = open 吗?

注释:Python 2.7.3

回答:谢谢大家,我试图打开 output.txt 而不是'output.txt',因此 python 无法理解我的声明。

4

5 回答 5

3

The filename output.txt is a string, but you have not quoted it. So the undefined output Python complains about is not the variable result of the open() call, but rather the improperly quoted string inside the open() call.

It gets misinterpreted as some object called open on which you are accessing a property 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 回答