Python 从不同的文件夹读取多个文本文件

Python 从不同的文件夹读取多个文本文件,python,regex,loops,text,Python,Regex,Loops,Text,因此,我尝试查看位于不同文件夹中的多个文本文件: path1 = 'P:/folder1/best_par.txt' path2 = 'P:/folder2/best_par.txt' paths = (path1, path2) for i in paths: inputfile = open(i) text = inputfile.read() cn2 = re.findall(r'(CN2\.mgt)\s+([-+]?[0-9]+\.[0-9]+)', text)

因此,我尝试查看位于不同文件夹中的多个文本文件:

path1 = 'P:/folder1/best_par.txt'
path2 = 'P:/folder2/best_par.txt'
paths = (path1, path2)
for i in paths:
    inputfile = open(i)
    text = inputfile.read()
    cn2 = re.findall(r'(CN2\.mgt)\s+([-+]?[0-9]+\.[0-9]+)', text)
但是,因此,我只有两个文件中的一个cn2值:

[('CN2.mgt', '0.142800')]
smth应该是这样的:

[('CN2.mgt', '0.142800')],[('CN2.mgt', '0.09017')]

您正在覆盖cn2变量,您应该在循环外声明它并将所有结果附加到它。

您正在覆盖cn2变量,您应该在循环外声明它并将所有结果附加到它

path1 = 'P:/folder1/best_par.txt'
path2 = 'P:/folder2/best_par.txt'
paths = (path1, path2)
for i in paths:
    inputfile = open(i)
    text = inputfile.read()
    cn2 = re.findall(r'(CN2\.mgt)\s+([-+]?[0-9]+\.[0-9]+)', text)
当您的循环第一次运行时,将读取path1 best_par并找到cn2

现在,当循环继续运行时,会找到第二条路径的cn2,并覆盖第一条cn2。因此,只剩下第二个cn2

你应该做什么:-

path1 = 'P:/folder1/best_par.txt'
path2 = 'P:/folder2/best_par.txt'
paths = (path1, path2)
for i in paths:
    inputfile = open(i)
    text = inputfile.read()
    print re.findall(r'(CN2\.mgt)\s+([-+]?[0-9]+\.[0-9]+)', text)
或:-

当您的循环第一次运行时,将读取path1 best_par并找到cn2

现在,当循环继续运行时,会找到第二条路径的cn2,并覆盖第一条cn2。因此,只剩下第二个cn2

你应该做什么:-

path1 = 'P:/folder1/best_par.txt'
path2 = 'P:/folder2/best_par.txt'
paths = (path1, path2)
for i in paths:
    inputfile = open(i)
    text = inputfile.read()
    print re.findall(r'(CN2\.mgt)\s+([-+]?[0-9]+\.[0-9]+)', text)
或:-


即使我在循环外声明变量,末尾也只有一个值。即使我在循环外声明变量,末尾也只有一个值。使用最后一个是最好的。我认为在第二个选项中,最后两行应该是:for I in cn2:printi@Shubham莎玛,差不多了。带有print的第一个选项工作得很好,但是带有append的第二个选项给了我10个值,其中两个值是唯一的[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),[('CN2.mgt','0.081993'),('CN2.mgt','0.081993'),[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),[('CN2.mgt','0.081993'),('CN2.mgt','0.081993'),[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),'在你的另一个循环之外code@ShubhamSharma我明白了:我在循环之前忘记了cn2=[],而不是在循环内部。谢谢。使用最后一行是最好的。我认为在第二个选项中,最后两行应该是:在cn2:print中为ii@Shubham莎玛,差不多了。带有print的第一个选项工作得很好,但是带有append的第二个选项给了我10个值,其中两个值是唯一的[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),[('CN2.mgt','0.081993'),('CN2.mgt','0.081993'),[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),[('CN2.mgt','0.081993'),('CN2.mgt','0.081993'),[('CN2.mgt','0.142800'),('CN2.mgt','0.142800'),'在你的另一个循环之外code@ShubhamSharma我明白了:我在循环之前忘记了cn2=[],而不是在循环内部。非常感谢。