微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

估算文本文件中值的函数

如何解决估算文本文件中值的函数

我在目录(* .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 举报,一经查实,本站将立刻删除。