1

我有一个 python 脚本,它将创建一个文本文件,然后将在这个新创建的文件上运行一个命令。

问题是命令行无法识别新创建的文件,并且我收到文件为空的错误消息。

我的代码是这样的:

randomval是一个函数,它将创建随机字符并将它们作为字符串返回。

text_file = open("test.txt", "w")
text_file.write(randomval(20,10))


# do something with the `test.txt` file

但我收到文件 test.txt 为空的错误。

有没有办法解决这个问题?

4

5 回答 5

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!')
于 2012-10-19T11:15:58.503 回答
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:~$
于 2012-10-19T11:01:22.540 回答
2

您至少应该在尝试对新文件 ( text_file.flush()) 执行某些操作之前刷新缓冲区。最好的办法是关闭文件并在需要时重新打开它。

于 2012-10-19T11:02:59.207 回答
2

做 af.close()然后再次打开它 text_file = open("test.txt", "r")

于 2012-10-19T11:19:23.930 回答
1

文件的流仍然打开!!!!试试看嘛:text_file.close()

于 2012-10-19T11:11:17.500 回答