2015-05-04 3 views
0

Я пытаюсь написать список с двумя разными файловыми папками (в текстовый файл) в python; однако, когда я запускаю свою программу, только мой второй путь к файлу добавляется в список и появляется в моем текстовом файле. Как добавить список, чтобы отображались файлы в обеих папках? Я думаю, что мой код опустошает список после первого шага. Я хочу, чтобы две папки были разделены и не хотели их комбинировать только ради списка.Создание текстового файла из двух разных папок в python

import os 
from os import listdir 
from os.path import isfile, join 

root = r'C:\GEO\Images\data\data_2008\ims_data_2008' 
mylist = [ ] 
for path, subdirs, files in os.walk(root): 
    for name in files: 
      mylist.append(os.path.join(path, name)) 

roottwo = r'C:\GEO\Images\data\data_2009\ims_data_2009' 
mylist = [ ] 
for path, subdirs, files in os.walk(roottwo): 
    for name in files: 
      mylist.append(os.path.join(path, name)) 

txt = open(r'C:\GEO6973\FinalExam\YoungResults\ims_data_list.txt', 'w') 
txt.write('dir' + ',' + 'file' + '\n') 
for item in mylist: 
    list = mylist.pop(0) 
    dir, filename = os.path.basename(os.path.dirname(list)), os.path.basename(list) 
    txt.write(dir + ',' + filename + '\n') 

with open(r'C:\GEO6973\FinalExam\YoungResults\ims_data_list.txt', 'r') as f: 
    read_data = f.read() 

ответ

2

Как вы говорите, ваш код опустошает список после первой папки. Вам нужно будет удалить второй mylist = [ ] после roottwo, иначе вы потеряете все данные, добавленные к списку на данный момент.

В последнем цикле, если вы пытаетесь выполнить итерацию по путям, добавленным в mylist, не используйте pop для доступа к ее содержимому. Вместо этого:

for item in mylist: 
    dir, filename = os.path.basename(os.path.dirname(item)), os.path.basename(item) 
    txt.write(dir + ',' + filename + '\n') 

Наконец, старайтесь избегать использования list в качестве имени переменной, поскольку она является зарезервированным ключевым словом в питона.

+0

Если я удаляю themylist после roottwo, только корневой файл записывается в мой список. –

+0

Это не должно произойти после удаления переопределения 'mylist'. После первого объявления вы добавляете только элементы. Если вы распечатываете 'mylist' перед открытием выходного файла, вы должны иметь содержимое обеих папок. – ODiogoSilva

+0

Удаление повторного определения не помогает. Я думаю, что это имеет какое-то отношение к моему запросу mylist.pop (0). –

1

После того, как установлено rootwo, вы звоните mylist = [ ]. Это создает новый список, эффективно удаляя все данные, которые вы ранее добавили в список.

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