我有一个python脚本,它将创建一个文本文件,然后在这个新创建的文件上运行命令。
问题是命令行无法识别新创建的文件,而且我收到文件为空的错误。
我的代码是这样的:
randomval
是一个函数,它将创建随机字符并将它们作为字符串返回。
text_file = open("test.txt", "w")
text_file.write(randomval(20,10))
# do something with the `test.txt` file
但是我收到错误,文件test.txt为空。
有没有解决这个问题?
答案 0 :(得分:3)
这是因为除非您刷新或关闭文件,否则操作系统不会将任何数据写入磁盘。要确保文件已关闭,请使用with
语句:
with open("test.txt", "w") as f:
f.write(randomval(20,10))
print('Whoa, at this point the file descriptor is automatically closed!')
答案 1 :(得分:2)
不要忘记关闭文件:
br@ymir:~$ python
Python 2.6.5 (r265:79063, Oct 1 2012, 22:04:36)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> file=open('foo.bar','w')
>>> file.write('42\n')
>>>
[2]+ Stopped python
br@ymir:~$ cat foo.bar
br@ymir:~$ fg
python
>>> file.close()
>>>
[2]+ Stopped python
br@ymir:~$ cat foo.bar
42
br@ymir:~$
答案 2 :(得分:2)
在尝试对新文件(text_file.flush()
)执行某些操作之前,您应该至少刷新缓冲区。最好的方法是关闭文件并在需要时重新打开它。
答案 3 :(得分:2)
执行f.close()
然后再次打开它,因为text_file = open(“test.txt”,“r”)
答案 4 :(得分:1)
该文件的流仍然是打开的!试试:text_file.close()