返回仅返回第1项

时间:2016-04-13 16:32:57

标签: python list return

在我的下面的函数中,我试图从多个.txt文件返回全文并将结果追加到列表中,但是,我的函数只返回我目录中第一个文件的文本。如果我用print替换return,它会将所有结果记录到控制台上,但是我似乎无法将结果附加到列表中。我对return函数做错了什么。 感谢。

import glob
import copy

file_paths = []
file_paths.extend(glob.glob("C:\Users\7812397\PycharmProjects\Sequence      diagrams\*"))
matching_txt = [s for s in file_paths if ".txt" in s]
full_text = []
def fulltext():
    for file in matching_txt:
        f = open(file, "r")
        ftext = f.read()
        all_seqs = ftext.split("title ")
        return all_seqs
print fulltext()

2 个答案:

答案 0 :(得分:0)

您将return放入循环中。我想你想做。虽然,你可以在这里产生价值。

for file in matching_txt:
    f = open(file, "r")
    ....
    full_text.append(all_seqs)
return full_text 

答案 1 :(得分:0)

您可以将函数转换为在内存使用方面更高效的生成器:

def fulltext():
    for file_name in matching_txt:
        with open(file_name) as f:
            ftext = f.read()
            all_seqs = ftext.split("title ")
            yield all_seqs

然后将生成器转换为列表(如果它们不是很大),如果你想使用生成器的项目,你可以简单地循环结果:

full_text = list(fulltext())

您的功能中的一些问题:

首先,不要将python内置名称用作变量名称(在本例中为文件)。 其次,对于处理文件(和其他内部连接),最好使用with语句,它将自动关闭块末尾的文件。