2016-06-03 9 views
2

Überprüfung habe ich eine Liste von Strings, die wie Dateien enthält unterOrdner Erstellen von Zahlen am Anfang einer Zeichenkette mit Python

filename = [ '000101 FL - Project Title Page.DOC', 
'014200 FL - References.DOC', 
'095446 FL - Fabric-Wrapped Ceiling Panels.DOC', 
'142113 FL - ELECTRIC TRACTION FREIGHT ELEVATORS.DOC'] 

ich überprüfen möchten, ob ein Ordner mit dem Namen Div + ersten beiden Zahlen aus in jeder Zeichenfolge existieren, wie Div00, Div01, Div09, Div14 in diesem Fall. Wenn nicht, möchte ich diesen Ordner erstellen. Speichern Sie dann den Namen der Datei in diesem Ordner.

In Pseudo-Code glaube ich es

for file in filenames 
    if 'Div' + file[0][0] not a folder 
     make folder 'Div' + file[0][0] 
     add file to folder 
    else 
     add file to folder Div + file[0][0] 

ähnlich sein würde, wird es mit den gleichen zwei Nummern beginnend mehrere Dateien sein, dies ist, warum ich sie in Ordner sortiert werden soll.

Lassen Sie mich wissen, wenn Sie eine Klarstellung benötigen.

+1

Haben Sie die Datei in den Ordner, verschieben Sie die Datei auf die folde kopieren möchten r oder erstellen Sie eine leere Datei mit dem Dateinamen im Ordner? –

+0

@DavidCullen Ich hätte das klarstellen sollen. Ich möchte alle Dateien, die mit XX beginnen, in einen neuen Ordner mit dem Titel DivXX – Jstuff

+0

@Jstuff kopieren, kopieren oder verschieben? – SparkAndShine

Antwort

1

Verwenden os.mkdir ein Verzeichnis und shutil.copy2 zu kopieren, um eine Datei zu erstellen

import os 
import shutil 

filenames = [ '000101 FL - Project Title Page.DOC'] 

for filename in filenames: 
    folder = 'Div' + filename[:2]  # 'Div00' 

    # Create the folder if doesn't exist 
    if not os.path.exists(folder): 
     os.makedirs(folder) 

    # Copy the file to `folder` 
    if os.path.isfile(filename): 
     shutil.copy2(filename, folder) # metadata is copied as well 
+0

Div ist nicht anfänglich in den Dateinamen vorhanden. Es muss später hinzugefügt werden. – Jstuff

+0

@Jstuff, Entschuldigung für Fehlinterpretation. Habe gerade meine Antwort bearbeitet. – SparkAndShine

+1

Okay, ich bekomme den Fehler. PermissionError: [Errno 13] Berechtigung verweigert: 'C: \\ Benutzer \\ justin.white \\ Desktop \\ Master_specs_With_Divisions \\ Div00' Beim Versuch, die Datei in den neuen Ordner zu kopieren. Es machte mir nichts aus, dass ich nicht wusste, dass ich copy2 benutzen musste. – Jstuff

1

Sie können nur prüfen, ob ein Ordner ist und es machen, wenn es nicht

if not os.path.exists(dirName): 
    os.makedirs(dirName) 
0

etwas Versuchen existiert wie folgt aus:

import os 
import shutil 

for file in filenames 
    dir_name = "Div%s" % file[0:2] 
    if not os.path.isdir(dir_name) 
     os.makedirs(dir_name) 
    shutil.copy(file, dir_name)