Python 不';t close()刷新缓冲区?

Python 不';t close()刷新缓冲区?,python,Python,调用不会产生任何输出(write\u test为空),但在python脚本完成执行后,字符串就出现了 # cat write_file.py #!/usr/bin/python import os f=open("/tmp/write_test", "w") f.write("test string\n") f.close #f=open("/tmp/write_test", "r") #f

调用不会产生任何输出(
write\u test
为空),但在python脚本完成执行后,字符串就出现了

# cat write_file.py
#!/usr/bin/python

import os

f=open("/tmp/write_test", "w")
f.write("test string\n")
f.close

#f=open("/tmp/write_test", "r")
#f.close


os.system("ls -l /tmp/write_test")
os.system("cat /tmp/write_test")

os.system()
开始工作之前,立即打开并关闭文件以进行读取。 我的理解是
close()
调用
flush()
,所有数据都应该放在文件中。我错过了什么


Python版本是3.9.3,正如@chemicalwill指出的,您实际上并没有调用close函数,而是将其作为变量调用。要“运行”一个函数,您必须使用参数调用它,即

# ./write_file.py 
-rw-r--r-- 1 root root 0 Apr 25 18:29 /tmp/write_test
# ls -la /tmp/write_test 
-rw-r--r-- 1 root root 12 Apr 25 18:29 /tmp/write_test
# cat /tmp/write_test 
test string
作为最后的考虑。值得探索python中的
with
语句。将其用于文件IO被视为标准。当文件超出范围时,它将自动关闭文件

f = open("/tmp/write_test", "w")
f.write("test string\n")
f.close()

你调用的是
f.close
而不是
f.close()
注意你的问题标题中是怎么写的
close()
,但是你的代码没有?啊,太好了。谢谢,现在可以用了。UPD:我希望这样的打字错误会被一些内置的验证器发现=(
with open("/tmp/write_test", "w") as f:
    f.write("test string\n")

# f is now closed by python itself, as it is out of scope