如何解决估算文本文件中值的函数
我在目录(* .txt)中有很多文本文件。每个文本文件都由字符串和浮点值组成,如下所示。
/home/lijun/data/2015_0.2_SWE.txt 2.8 1.856 8.9354
/home/lijun/data/2015_0.2_SWE.txt 2.1 2.866 2.9354
/home/lijun/data/2015_0.2_SWE.txt 2.0 5.856 9.9854
/home/lijun/data/2015_0.2_SWE.txt 2.2 4.876 2.9454
/home/lijun/data/2015_0.2_SWE.txt 2.7 2.856 6.9854
/home/lijun/data/2015_0.2_SWE.txt 2.4 4.896 2.9554
/home/lijun/data/2015_0.2_SWE.txt 2.3 2.856 8.9854
我想为第4列中的每个值估算一个函数(我想将其取为z),并希望将输出保存在同一文件的最右端
/home/lijun/data/2015_0.2_SWE.txt 2.8 1.856 8.9354 output
/home/lijun/data/2015_0.2_SWE.txt 2.1 2.866 2.9354 output
/home/lijun/data/2015_0.2_SWE.txt 2.0 5.856 9.9854 output
/home/lijun/data/2015_0.2_SWE.txt 2.2 4.876 2.9454 output
/home/lijun/data/2015_0.2_SWE.txt 2.7 2.856 6.9854 output
/home/lijun/data/2015_0.2_SWE.txt 2.4 4.896 2.9554 output
/home/lijun/data/2015_0.2_SWE.txt 2.3 2.856 8.9854 output
我想对目录中的每个.txt文件执行相同的操作。
我的功能设计如下:
m=1
n=2
o=4
p=9
def some_estimation(z):
res=m*n*o*p+z
return res
#want to calculate the above func for every z value(4th column) of every .txt files in directory #and want to save the same
for z_value in /home/lijun/data/*.txt[3]:
out=some_estimation(z_value)
with open file(*.txt)
但是它并没有达到我的期望。我希望有一些专家可以帮助我。谢谢。
解决方法
我建议将结果放入单独的文件中,以免使原始文件混乱。如:
with open("in.txt","r") as infile,open("out.txt","w") as outfile:
for line in infile:
a,b,c,d = line.split()
b,d = float(b),float(c),float(d)
result = ... # do stuff with b,and d
outfile.write(f"{line} {result}\n")
,
一种可能的解决方案,其中包含步骤说明
代码
import os
def some_estimation(z):
return m*n*o*p + z
# constants
m = 1
n = 2
o = 4
p = 9
directory = "data" # directory path (if data is a subdirectory of current working directory)
# if it's in the current working directory,use directory = "."
# or you can specify an absolute path
# Loop over files in directory
# using listdir (https://www.tutorialspoint.com/python/os_listdir.htm)
for filename in os.listdir(directory):
if filename.endswith("SWE.txt"): # optional (only passes files ending in SWE.txt)
with open(os.path.join(directory,filename),'r') as fin:
# file opened for reading only
line = fin.readline() # read file line
a,c = [float(v) for v in line.split()] # convert file values to float
out = some_estimation(c) # perform calculation using last value
# writing back to same file (open fle for writing)
with open(os.path.join(directory,'w') as fout:
fout.write(f'{a} {b} {c} {out}\n')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。