【问题标题】:iteraing and comparing values in txt file python迭代和比较txt文件python中的值
【发布时间】:2016-06-27 19:23:20
【问题描述】:

我在一个文件夹中有多个文件,其中包含两列信息:波数和强度:

500.21506 0.01093
500.45613 0.02135
500.69720 0.01043
500.93826 0.01997
501.17933 0.01335
501.42040 0.01579
501.66147 0.01749
501.90253 0.01256
502.14360 0.02054
502.38467 0.01011
502.62574 0.02108
502.86680 0.01132
503.10787 0.01854

我需要我的代码逐行读取每个文件,如果波数介于预设的低波数和高波数之间,则写入与这些波数相关的强度。现在我有这个:

with open(files[count], 'r') as g:
    for line in g:
        parts = map(float, line.split())
        if parts[0] >= lowwav and parts[0] <= highwav:
            f.write(parts[1])
            f.write('\n')
        else: break

当我命令打印parts[0](txt 文件中的波数)或打印parts[1](txt 文件中的强度)时,它只打印文件夹最后一个文件中的第一个波数和第一个强度。

我是 python 新手,对如何执行此操作非常困惑,但它在逻辑上似乎很简单。

【问题讨论】:

    标签: python loops io comparison iteration


    【解决方案1】:

    这适用于任何文本文件。你可以阅读更多关于读取数据here

    import glob
    x = []
    for filename in glob.iglob('/Path_to_File/*.txt'):
         x.append(filename)
    
    wave_list = []
    for i in x:  
        with open (i,"rU") as infile:
            lines = infile.read().split('\t')            
            for row in lines:
                if row[0] < High_wave and row[0] > Low_wave:
                    wave_list.append(row[1])
    

    【讨论】:

    • 我在 中收到错误消息“文件“readinfo1.py”第 60 行,其中 open(i,"rU") as infile: TypeError: coercing to Unicode: need string or buffer , 找到文件”
    • 试试这个:"with open (i,"r") as infile:" 所以只需将 "rU" 替换为 "r"。
    • 仍然收到相同的错误消息。文件是否需要作为字符串读入?
    • 你的数据是如何分隔的,是制表符分隔的吗?如果是这样,请按原样尝试新代码
    • 它用空格分隔,所以我使用 (' ') 而不是 \t 但仍然收到相同的错误消息
    猜你喜欢
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多