2017-02-15 11 views
1

Мои данные организованы как таковые: У меня есть 30 папок. В каждой из них 3 подпапки. В каждом из них один файл.Как написать списки в файлах с python

Я хотел бы написать сценарий, который записывает в текстовом файле 1, расположенном в папке 1, пути к файлам, расположенным во вложенных папках этой папки 1; и т. д. для каждой другой папки.

Проблема заключается в том, что сценарий пишет только в каждом текстовом файле, 3-й файл (файл в подпапке 3), а не файлы в подпапках 1, 2, 3.

Это то, что я пробовал:

import glob 
import os 

gotofolders = '/path/to/folderslocation/' 
foldersname = open('/path/to/foldersname.txt').read().split() 

for folders in foldersname: 
    foldersdirectory = os.path.join(gotofolders,foldersname) 
    filepaths = glob.glob(os.path.join(foldersdirectory)+'*subfolders/*files') 
    for filepath in filepaths: 
     savethepaths = os.path.join(foldersdirectory)+'files_path_in_that_folder.txt' 
     with open (savethepaths,'w') as f: 
      f.write(filepath+'\n') 

Как уже говорилось, он работает почти, excepts, что в каждом «files_path_in_that_folder.txt» у меня есть 3-й элемент списка «Filepath», а не всех 3-х элементов.

Спасибо!

ответ

1

Хорошо, я это понял; Я должен был добавить:

with open (savethepaths,'w') as f: 
    f.writelines(list("%s\n" %filepath for filepath in filepaths)) 
1
import os 
def directory_into_file(_path, file_obj, depth): 
# depth is a string of asterisk, just for better printing. starts with empty string 
file_obj.write(depth + _path + '\n') 
if(os.path.isdir(_path)): 
    file_list = os.listdir(_path) 
    os.chdir(_path) 
    for file in file_list: 
     directory_into_file(file, file_obj, depth+'*') 


    os.chdir("..") 

это должно работать. _path - путь к каталогу, file_obj - отправить файл объекта функции и первого, глубины - при первом вызове отправить пустую строку

надеюсь, что это будет работать. не пробовал это сам ...