2017-02-15 3 views
1

Meine Daten sind als solche organisiert: Ich habe 30 Ordner. In jedem von ihnen, 3 Unterordner. In jedem von ihnen eine Datei.So schreiben Sie Listen in Dateien mit Python

Ich möchte ein Skript schreiben, das in einer Textdatei 1 in Ordner 1 die Pfade zu den Dateien in den Unterordnern dieses Ordners 1 schreibt; und so weiter für jeden anderen Ordner.

Das Problem ist, dass das Skript nur schreibt, in jeder Textdatei, die dritte Datei (in Unterordner 3), anstatt die Dateien in Unterordner 1, 2, 3.

Dies ist, was ich versucht:

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') 

Wie gesagt, es funktioniert fast, ausnimmt, daß in jedem ‚files_path_in_that_folder.txt‘ ich das dritte Element der „filepath“ -Liste, anstatt alle drei Elemente.

Danke!

Antwort

1

Okay, ich habe es herausgefunden; Ich hatte hinzuzufügen:

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("..") 

dies funktionieren sollte. _path - der Pfad des Verzeichnisses, file_obj - die Objektdatei mit der Funktion senden und ersten, Tiefe - auf dem ersten Anruf

Hoffnung eine leere Zeichenfolge senden diese funktionieren würden. habe es nicht selbst versucht ...

Verwandte Themen