繁体   English   中英

打印和file.write提供不同的输出,Python

[英]Print and file.write giving different outputs, Python

message = 'aaa'
for alpha in message:
   num = ord(alpha) + 2
   ans = chr(num)
   print(ans)
   file = open('f.txt', 'w')
   file.write(ans)
   file.close()

print(ans)按预期方式打印ccc,但是file.write(ans)只写'c'。 为什么它不能打印整个字符串? 谢谢你

write方法从文件的某个(当前)位置开始写入。 由于您是在每次迭代中打开文件,因此写入总是从文件的开头开始,覆盖现有数据。 在您的情况下,它将替换现有字母c

您需要在循环之前打开文件, 然后在循环之后关闭文件。 这将使文件保留位置(请使用file.tell()检查):

message = "aaa"
file = open('f.txt', 'w')
for alpha in message:
   num = ord(alpha) + 2
   ans = chr(num)
   print(ans)
   file.write(ans)

file.close()

或者,甚至更好的是,使用上下文管理器:

message = "aaa"
with open('f.txt', 'w') as file:
    for alpha in message:
        num = ord(alpha) + 2
        ans = chr(num)
        print(ans)
        file.write(ans)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM