2011-09-30 2 views
2

В настоящее время я работаю над этой задачей и застрял. Пожалуйста, дайте мне ваши советы. Код, который я пишу ниже, возвращает только имя файла .txt из нескольких папок, в то время как я хотел бы распечатать содержимое каждого .txt-файла и сохранить в разных строках в excel. Содержимое каждого файла .txt - это номера.Python: как читать все содержимое текстового файла в нескольких папках и сохранять их в одном файле Excel

import os, glob,xlwt 
#create workbook and worksheet 
wbk = xlwt.Workbook() 
sheet = wbk.add_sheet('data') 
path= 'E:\Cag\Data' 
row = 0 
for dir,subdir,files in os.walk(path): 
    for file in files: 
     if glob.fnmatch.fnmatch(file, '*.txt'): 
      L = file.strip() 
      sheet.write(row,5,L) 
      row += 1 
wbk.save('read_all_txt_in_folders.xls') 
print 'success' 
+0

вам следует импортировать напрямую fnmatch, а не использовать его из glob. – Simon

+0

Как вы думаете, 'L = file.strip()' будет делать? –

+0

Пожалуйста, не используйте встроенные имена функций ('файл') в качестве имени переменной. Это смущает людей, читающих вашу программу. Кроме того, имена переменных верхнего регистра ('L') запутывают. Наконец, имена однобуквенных переменных запутывают. Используйте значащие имена в нижнем регистре. –

ответ

2

Ну, вы видите имена файлов, потому что вы их пишете. L содержит имя файла. (И L = file.strip() кажется мне ненужным.)

Если вы хотите написать содержимое файла, вы должны сделать вместо этого L = open(os.path.join(dir, file), "r").read().

+0

Да, это именно то, что я хочу. Я попробовал это, и он вернул эту ошибку: Traceback (последний последний вызов): Файл «E: \ read_all_txt_in_folders.py», строка 15, в L = open (файл, 'r'). Read() IOError : [Errno 2] Нет такого файла или каталога: 'ttt.txt'. Ttt.txt находится в папке, почему эта ошибка печатается. Спасибо – Ricky

+0

IIRC вам нужно связать 'dir' (или' subdir'?) И 'файл', чтобы получить полный путь. – eudoxos

+0

@eudoxos: Не могли бы вы объяснить мне немного яснее? – Ricky

2

Если вы хотите записать содержимое файла, вы должны сделать вместо

with open(os.path.join(dir, file), "r") as source: 
    L= source.read() 

Это гарантирует, что файл действительно закрыт, когда вы закончите читать их. Это освобождает системные ресурсы.

+0

Да. Он работает так, как показал мне glglgl. благодаря – Ricky

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

  • Нет связанных вопросов^_^