这是我的代码的简化版本。我正在尝试使用以下方法写入文件:
fileName = "missing.csv"
for x in range (0,5):
print(x)
saveData = open(fileName, "a")
saveData.write(str(x)+'\n')
saveData.close
控制台打印:
0, 1, 2, 3, 4
......应该如此。但是,当我打开missing.csv时,它只包含:
0
1
2
3
否最后一个条目(4)。
任何想法?请指教。
答案 0 :(得分:5)
如果您使用上下文管理器,则无需担心关闭:
fileName = "missing.csv"
for x in range(0, 5):
print(x)
with open(fileName, "a") as save_data:
save_data.write(str(x) + '\n')
如果你不希望在每次操作后关闭文件,你可以只打开和关闭它一次:
fileName = "missing.csv"
with open(fileName, "a") as save_data:
for x in range(0, 5):
print(x)
save_data.write(str(x) + '\n')
答案 1 :(得分:2)
为避免您在代码中犯的错误(错过()
到.close
),您可以使用上下文管理器:
fileName = "missing.csv"
for x in range (0,5):
print(x)
with open(fileName, "a") as saveData:
saveData.write(str(x)+'\n')
在.close()
区块的出口处隐含调用with..
。
答案 2 :(得分:2)
无需在循环中打开/关闭文件,打开一次并关闭一次。除此之外,您在()
函数中缺少close
。
fileName = "missing.csv"
saveData = open(fileName, "a")
saveData.write("\n".join( map(str, range(0,5)) ))
saveData.close()
如果您更喜欢使用上下文。
fileName = "missing.csv"
with open(fileName, "a") as save_data:
save_data.write("\n".join( map(str, range(0,5)) ))
答案 3 :(得分:-1)
这个python代码没有任何问题。还有别的错误。
删除missing.csv并重试。我怀疑从前一次运行中遗留了0 1 2 3并且missing.csv实际上没有更新。
可能是权限问题。检查文件权限以查看运行脚本的用户是否具有权限。 I.E.确保该组没有错,所有者没有错,并且实际的rwx值没有错误。