Python脚本写入文件无内容,但控制台逐行运行正常,原因何在?
解决Python脚本写入文件无内容但控制台运行正常的问题
作为Python新手碰到这种“明明代码逻辑看起来没问题,控制台能跑通脚本却出问题”的情况,确实挺闹心的,我来帮你排查最可能的两个原因,以及对应的解决办法:
1. 最可能的问题:close方法没加括号!
你脚本里最后一行写的是file.close,但这只是引用了close方法本身,并没有实际调用它执行关闭操作。Python的文件写入是有缓冲区的,只有当文件被正确关闭(或者手动刷新缓冲区)时,缓冲区里的内容才会真正写入磁盘。
在控制台逐行运行时,要么是你下意识写了file.close()(加了括号),要么是退出交互式环境时Python自动帮你关闭了文件,所以内容成功写入;但脚本里没加括号的话,程序结束前缓冲区的内容可能还没来得及刷到磁盘上,导致文件是空的。
解决办法:把最后一行改成file.close(),确保调用关闭方法:
file = open("BAL.txt","w") I = '200' file.write(I) file.close() # 这里必须加括号!
2. 备选排查:脚本工作目录和你查看的目录不一致
有时候你在终端某个目录下运行脚本,但脚本的工作目录可能不是这个目录,导致生成的BAL.txt在另一个位置,你cat的只是当前目录的空文件。
排查方法:在脚本里加一行代码打印当前工作目录,确认文件生成的位置:
import os print("当前脚本工作目录:", os.getcwd())
运行脚本后,根据输出的路径去查找BAL.txt,就能看到是否真的写入了内容。
更推荐的安全写法:使用with语句
其实Python里有更省心的文件操作方式,用with语句可以自动帮你管理文件的打开和关闭,完全不用手动写close(),还能避免因为忘记关闭导致的各种问题:
with open("BAL.txt", "w") as file: I = '200' file.write(I)
这种写法不管程序是否正常结束,Python都会自动关闭文件,缓冲区的内容也会被正确写入磁盘。
内容的提问来源于stack exchange,提问作者user9245872
相关产品推荐
相关产品推荐

