我有一个名为fName.txt的文件在一个目录中。运行以下Python代码片段将通过执行循环(包含片段)三次,将6个数字添加到文本文件中的3行和2列。
但是,在写入新数据之前,我想完全清空该文件。(否则,多次运行脚本会产生比模拟所需的三行更多的行,这将产生无意义的结果;换句话说,脚本只需要从模拟中生成的三行)。
我查阅了以下页面,其中解释了如何操作:how to delete only the contents of file in python,但我无法将其应用到我的示例中。
特别地,在pass语句后,鉴于我的文件一开始就被关闭,并且必须在执行print语句后再次关闭,我不确定语句的顺序。每次,我都会收到不同的错误消息,无论如何都无法避免。下面是一种错误类型,表明内容已被删除(很可能是在print语句之后):
这就是为什么我决定保留代码片段的最简形式,而没有使用页面上的任何建议:
每次模拟运行会生成3行应当被打印到文件中。当
解决方法:
唯一的解决方法是在运行代码之前选择
问题:
如何修改上述代码以实现自动删除文件,并在填充新的三行之前进行操作?
但是,在写入新数据之前,我想完全清空该文件。(否则,多次运行脚本会产生比模拟所需的三行更多的行,这将产生无意义的结果;换句话说,脚本只需要从模拟中生成的三行)。
我查阅了以下页面,其中解释了如何操作:how to delete only the contents of file in python,但我无法将其应用到我的示例中。
特别地,在pass语句后,鉴于我的文件一开始就被关闭,并且必须在执行print语句后再次关闭,我不确定语句的顺序。每次,我都会收到不同的错误消息,无论如何都无法避免。下面是一种错误类型,表明内容已被删除(很可能是在print语句之后):
/usr/lib/python3.4/site-packages/numpy/lib/npyio.py:1385: UserWarning: genfromtxt: Empty input file: "output/Images/MW_Size/covering_fractions.txt"
warnings.warn('genfromtxt: Empty input file: "%s"' % fname)
Traceback (most recent call last):
File "Collector2.py", line 81, in <module>
LLSs, DLAs = np.genfromtxt(r'output/Images/MW_Size/covering_fractions.txt', comments='#', usecols = (0,1), unpack=True)
ValueError: need more than 0 values to unpack
这就是为什么我决定保留代码片段的最简形式,而没有使用页面上的任何建议:
covering_fraction_data = "output/Images/MW_Size/covering_fractions.txt"
with open(covering_fraction_data, "mode") as fName:
print('{:.2e} {:.2e}'.format(lls_number/grid_number, dla_number/grid_number), file=fName)
fName.close()
每次模拟运行会生成3行应当被打印到文件中。当
mode
为'a'
时,生成的三行将添加到现有文件中,因此文本文件将包含多于三行的内容,因为它已经包含了一些内容。将'a'
更改为'w'
后,文本文件中只有1行被打印出来;前两行不希望被删除。解决方法:
唯一的解决方法是在运行代码之前选择
'a'
模式并手动删除文件的内容。这样,在运行代码后,文本文件中只会产生三行预期输出。问题:
如何修改上述代码以实现自动删除文件,并在填充新的三行之前进行操作?