有人能告诉我为什么当我打开这个python文件时会自动关闭?
import itertools
for combination in itertools.product(xrange(10), repeat=4):
print ''.join(map(str, combination))
with open("C:\Users\User\Desktop\test.txt", "a") as myfile:
myfile.write(join(map(str, combination)))
固定缩进
答案 0 :(得分:0)
这是因为您使用with
样式的打开文件。退出with
块时文件将关闭。它是一种打开文件的安全方式。这样,您就不必明确地在close
上调用myfile
方法。为避免这种情况,您可以使用
myfile = open("C:\\Users\\User\\Desktop\\test.txt", "a")
myfile.write(join(map(str, combination)))
请注意,使用完文件后,请确保使用myfile.close()
您可以浏览this page了解详情
修改强>
尝试使用此
import itertools
with open(r"C:\Users\User\Desktop\test.txt", "a") as myfile:
for combination in itertools.product(range(10), repeat=4):
print (''.join(map(str, combination)))
myfile.write(''.join(map(str, combination)))
答案 1 :(得分:0)
关于'with'命令:Understanding Python's "with" statement
简短说明:即使您忘记自行关闭,它们会在块执行结束后关闭您的文件。它是一种更好的方式来放置你的代码,而不是try-finally。
在您的情况下,它会为循环的每次迭代打开一次。最后关闭。然后,再次打开它以进行下一次迭代。这是低效的。
只是一个建议,你想避免在for
循环中打开文件。
您可以在外面调用它,以便它打开一次,然后运行循环。 with
语句将在块执行结束时自动关闭文件。但同样,取决于您的使用环境。
with open(r"C:\Users\User\Desktop\test.txt", "a") as myfile:
for combination in itertools.product(xrange(10), repeat=4):
print ''.join(map(str, combination))
myfile.write(''.join(map(str, combination)))
答案 2 :(得分:0)
import itertools
for combination in itertools.product(xrange(10), repeat=4):
print ''.join(map(str, combination))
with open("C:\Users\User\Desktop\test.txt", "a") as myfile:
myfile.write(join(map(str, combination)))
现在它会起作用。 with
将创建一个块,因此您需要缩进。请记住:)
答案 3 :(得分:0)
答案 4 :(得分:0)
您还应将最后一行修改为:
myfile.write(''.join(map(str, combination)))
并参考@RetardedJoker的回答
这是我的代码:
import itertools
with open("C:\\Users\\User\\Desktop\\test.txt", "a") as myfile:
for combination in itertools.product(xrange(10), repeat=4):
result = ''.join(map(str, combination))
print result
myfile.write(result)