这应该工作:python中的open()

时间:2012-12-07 21:41:02

标签: python file-io

我试图在一些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无法理解我的声明。

5 个答案:

答案 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()