2013-05-22 2 views
-1

Чтобы получить список файлов, что не так с кодом ниже, потому что он не предоставляет список.получить список файлов в python

import glob 
file_list = glob.glob('C:/test/*.txt') 
out_file = open('C:/test/out_file/out_file.txt', 'w') 
for i in file_list: 
    out_file.write(i) 
out_file.close() 
+0

Вы не получите никакого вывода * вообще *? –

+0

вывод не находится в формате списка C:/test \ 1.txtC:/test \ 2.txtC:/test \ 3.txtC:/test \ 4.txtC:/test \ 5.txt –

+0

You * shouldn 't * получить какой-либо результат, так как вы ничего не печатали. Вы должны получить список имен файлов, записанных в файл, при условии, что файл откроется и записи будут выполнены успешно, хотя они будут все в одной строке, так как вы используете 'write'. –

ответ

0

Я взял на себя смелость в рефакторинга кода, чтобы улучшить его немного, и исправить эту проблему с новой строкой вы имели:

from glob import glob 

with open('C:/test/out_file/out_file.txt', 'w') as out_file: 
    out_file.write('\n'.join(glob('C:/test/*.txt'))) 
2

Вам нужно добавить строку:

for i in file_list: 
    out_file.write(i + '\n') 

или использовать print():

for i in file_list: 
    print(i, file=out_file) 

Запись в файл не будет автоматически добавлять новые строки; только print() делает.

+0

спасибо, он работал –

+0

Или более компактный 'out_file.writelines (list (file_list))' –

+1

Просто альтернатива: 'print (* file_list, sep = '\ n', file = out_file)' –

Смежные вопросы