如何顺序读取和处理一组文本文件中的数据?

时间:2017-03-18 10:34:04

标签: python python-2.7 text-files

我有50个文本文件(即Force1.txtForce2.txt,...,Force50.txt)。文件如下所示:

0.0000000e+000 -1.4275799e-003  
2.0000000e-002 -1.1012760e-002  
4.0000000e-002 -1.0298970e-002  
6.0000000e-002 -8.9733599e-003  
8.0000000e-002 -9.6871497e-003  
1.0000000e-001 -1.2236400e-002  
1.2000000e-001 -1.4479739e-002  
1.4000000e-001 -1.3052160e-002  
1.6000000e-001 -1.1216700e-002  
1.8000000e-001 -8.6674497e-003  
2.0000000e-001 -8.6674497e-003  
2.2000000e-001 -1.3358070e-002  
2.4000000e-001 -1.7946720e-002  
2.6000000e-001 -1.9782179e-002

我希望从Force1.txt读取数据,将数据存储在元组列表中,并分析这些数据(此类分析的详细信息与问题无关)。然后我必须对Force2.txtForce3.txt等做同样的事情。

这是我的尝试:

def load_data(fn):
    with open(fn) as f:    
        lines = f.readlines()
    return [tuple(map(float, x)) for x in [row.split() for row in lines]]
def display_data(lst):
    return lst.__repr__().replace('[', '').replace(']', '')
pp = []
for file in os.listdir("dir"):
    if file.endswith('.txt'):
        if file.startswith('Force'):    
            print os.path.join(r"dir", file)     
            with open(file) as f:     
                for line in f:  
                    pp.append(map(float, line.split()))
mdb.models['Model-1'].TabularAmplitude(data=pp, name='Table', smooth=SOLVER_DEFAULT, timeSpan=STEP)

我收到此错误:

  

'表',smooth = SOLVER_DEFAULT,timeSpan = STEP):
  无效的时间值,预期的单调增加

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

此代码应该:

import os

def load_data(fn):
    with open(fn) as f:     
        lines = f.readlines() 
    return [tuple(map(float, x)) for x in [row.split() for row in lines]]

def display_data(lst):
    return lst.__repr__().replace('[', '').replace(']', '')

dirname = r"Your dir name goes here"

for filename in os.listdir(dirname):
    if filename.endswith('.txt'):
        if filename.startswith('Force'):     
            pathfile = os.path.join(dirname, filename)
            print pathfile
            pp = load_data(pathfile)
            print display_data(pp)    
            mdb.models['Model-1'].TabularAmplitude(data=pp, 
                                                   name='Table', 
                                                   smooth=SOLVER_DEFAULT, 
                                                   timeSpan=STEP)

您只需要使用包含文本文件的目录名称更新dirname。我建议您不要将file用作变量标识符,因为file是Python中的保留字。我使用了filename代替。