在我的下面的函数中,我试图从多个.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()
答案 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
语句,它将自动关闭块末尾的文件。