Вы открываете и закрываете выходной файл на каждой итерации.
Почему бы просто не сделать
with open("Summary.txt", "w") as linkfile:
while (count4 <= num_files):
file_p = [directory,str(count4),'.txt']
file_path = ''.join(file_p)
cand_summary = linecache.getline(file_path, 2).strip() # string module is deprecated
linkFile.write(cand_summary)
linkFile.write("\n")
count4 = count4 + 1
Кроме того, linecache
, вероятно, здесь не тот инструмент, так как он оптимизирован для чтения нескольких строк из одного файла, а не одной строки из нескольких файлов..
Вместо этого лучше сделать
with open(file_path, "r") as infile:
dummy = infile.readline()
cand_summary = infile.readline.strip()
Также, если вы отбросите метод strip()
, вам не нужно повторно добавлять \n
, но кто знает, почему выесть это там.Возможно, .lstrip()
будет лучше?
Наконец, что с ручным циклом while?Почему бы не использовать цикл for?
Наконец, после вашего комментария я понимаю, что вы хотите поместить результат в список, а не в файл.ОК.
Всего:
summary = []
for count in xrange(num_files):
file_p = [directory,str(count),'.txt'] # or count+1, if you start at 1
file_path = ''.join(file_p)
with open(file_path, "r") as infile:
dummy = infile.readline()
cand_summary = infile.readline().strip()
summary.append(cand_summary)