2017-02-15 21 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') 

如上所述,除了在每個'files_path_in_that_folder.txt'中我有第三個元素的「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 - 目標文件發送到功能,第一, 深度 - 在第一個電話發送一個空字符串

希望這會工作。沒有親自嘗試......