我有大量的文件,我想从中提取数据并写入文件。示例输入行是:
species,subl,cmp= 1 6 1 s1,torque= 0.11616E-06-0.50264E-14
species,subl,cmp= 2 6 1 s1,torque= 0.13407E-03 0.74778E-07
species,subl,cmp= 3 6 1 s1,torque= 0.71246E-06 0.28390E-14
species,subl,cmp= 3 6 3 s1,torque=-0.46230E-12 0.30428E-13
并且给定的文件几乎没有这样的行,我想写一行
小脚本显示了我的意图。
#!/usr/bin/python3
import sys
# import math
import os
rootdir = str(sys.argv[1])
outf = str(sys.argv[2])
s = []
with open(outf, 'w') as of1:
for subdir, dirs, files in os.walk(rootdir):
for file in files:
if file == "out-Dy-eos2":
inf = subdir+'/'+file
with open(inf, 'r') as inf1:
for line in inf1:
if "species,subl,cmp=" in line:
of1.write(line[-13:])
# s.append(line[-13:])
# print(s)
它以新行给出每个输出,如:
-0.50264E-14
0.74778E-07
0.28390E-14
等等,即每个条目的新行。
我还试图附加一个列表,就像(请不要理会这个号码):
[0.12775E-02\n', '-0.19777E-11\n', '-0.18810E-13\n']
从我的假设,新行在输入文件本身。 所以,问题是,我如何在同一行中写出这些值?没有换行?
答案 0 :(得分:1)
这非常简单,只需在写入文件之前使用line.rstrip(' \ n')。这也让您有机会根据自己的需要进行格式化。例如
if "species,subl,cmp=" in line:
data = line[-13:].rstrip('\n')
of1.write(data+" ")
会给你一个看起来像
的文件-0.50264E-14 0.74778E-07 0.28390E-14