【发布时间】:2020-08-26 17:12:10
【问题描述】:
我有一个文件(名称:state2),其结构如下:
timestep
0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 1.2176673
timestep
-0.0151405 -0.0000000 -0.0874954
-0.0347223 0.0000001 1.2559323
timestep
-0.0492274 0.0000001 -0.1238961
-0.0976473 -0.0000002 1.2335932
.... (24 timesteps)
我正在尝试将每个 timestep(仅数字)放在目录中的单独文件中。我编写了以下代码,但它只将第一个时间步长数据写入文件。如果我删除break,那么它会将整个原始文件再次写入单独的文件中。
import os
steps = []
BaseDir=os.getcwd()
data=os.path.join(BaseDir, 'state2')
f= open(data, 'r')
all_lines = f.readlines()
for k in range(24):
path = os.path.join(BaseDir, 'steps_{0:01d}'.format(k))
os.mkdir(path)
dest = os.path.join(BaseDir,'steps_{0:01d}'.format(k), 'step{0:01d}'.format(k))
fout = open(dest, 'w')
for i in range(0, len(all_lines)):
if 'timestep' in all_lines[i]:
fout.write('{0}{1}}'.format(all_lines[i+1], all_lines[i+2]))
break
【问题讨论】:
-
每个时间步的行数是否相同?
-
是的,每个时间步都有相同的行数
-
仔细检查您的代码。当你每次循环
for i in range(0, len(all_lines)时会发生什么?无论如何,Pranav 的答案是正确的。 -
@Sophi,我认为原始输入文件的格式有些混乱。您能否确认您的
state2文件看起来像我编辑的那样?即两行数字之间没有空行? -
@PranavHosangadi,是的,您的修改是正确的。没有空行