我试图在一些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无法理解我的声明。
答案 0 :(得分:3)
文件名output.txt
是一个字符串,但您没有引用它。因此,未定义的output
Python抱怨不是open()
调用的变量结果,而是open()
调用中不正确引用的字符串。
它被误解为一个名为open
的对象,您正在访问该属性txt
。
output = open('output.txt', 'w')
答案 1 :(得分:1)
output.txt
未被引用;因此它不被视为字符串文字,而是被python视为变量。
应该是:
output = open("output.txt", 'w')
此外,如果您使用with
,最好使用python >= 2.5
结构:
with open("output.txt", 'w') as output:
output.writelines(lines)
因为它会自动处理文件关闭,以避免资源泄漏,无论发生什么。
答案 2 :(得分:0)
output = open(output.txt, 'w')
我认为错误是因为output.txt不是字符串。试试
output = open('output.txt', 'w')
答案 3 :(得分:0)
您忘记将“output.txt”放在引号中。
答案 4 :(得分:0)
除了错误之外,它可能没有完全符合您的意图。以写入模式打开文件并写入文件将完全替换该文件。如果您希望将循环中的内容附加到该文件中,则需要以追加模式打开它:
output = open("output.txt", "a")
for x in y:
output.writelines(x) #or whatever you're writing
output.close()