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

2024-03-28 16:27:58 发布

您现在位置: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”。为什么它不打印整个字符串?多谢了。你知道吗


Tags: inalphatxtmessageforcloseopennum
1条回答
网友
1楼 · 发布于 2024-03-28 16:27:58

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)

相关问题 更多 >