部门网站建设宗旨/百度大数据分析平台
我有一个文件叫做fName.txt文件在目录中。运行下面的python代码段(来自模拟)将通过执行循环(包含代码段)三次,将6个数字添加到文本文件的3行和2列中。但是,我想在写入新数据之前完全清空文件。(否则,多次运行脚本将生成模拟所需的三行以上的行,这将产生无意义的结果;换句话说,脚本需要参见仅模拟生成的三行)。我看到了下面的一页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
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”后,文本文件中不再打印3行,而是只打印了1行;前两行被随意删除。在
解决方法:
避免这一切的唯一方法是选择'a'mode,并在运行代码之前手动删除文件的内容。这样,在运行代码之后,文本文件中只生成三行,而这正是输出所期望的。在
问题:
所以,我的问题基本上是,“我如何修改上面的代码来自动删除文件并在填充三个新行之前在
非常感谢你的帮助。在