2016-04-07 11 views
-1

Ich habe PDF-Dateien gefällt das:Wie organisiert man Dateien in Python?

  • 9706_s15_qp_12
  • 9706_w15_qp_12

Ich möchte Dateien basierend auf ihren Namen bewegen. Wie _s15 bis summer 2015 und _w15 bis winter 2015.

Ich habe viele Dateien. Ich hatte verwendet shutil.move('C:\\bacon.txt', 'C:\\eggs')

Aber das Problem ist, dass ich Dateinamen nacheinander schreiben müssen. Wie macht man das rekursiv?

habe ich diesen Code:

import os 
import shutil 

os.chdir('D:\\Accounting (9706)') 
for root, dirs, files in os.walk('D:\\Accounting (9706)', topdown=False): 
    for name in files: 
     shutil.move(name, 'D:\\') 

und es bewegt alle meine Dateien. Ich möchte bestimmte bewegen.

Antwort

1

Versuchen Sie vielleicht, ein Wörterbuch zu erstellen, in dem der Schlüssel der Speicherort ist, an den Sie die Datei verschieben möchten, und der Wert ist eine Liste aller Dateien, die Sie an diesen Speicherort verschieben möchten. Durchqueren Sie dann die Schlüssel und Werte des Wörterbuchs. Sie können das Dienstprogramm move mit Variablen verwenden, sofern die Variablen Zeichenfolgen sind und einem gültigen Speicherort entsprechen.

1

Versuchen Sie folgendes:

import os 
for root, dirs, files in os.walk('your source path', topdown=False): 
     for name in files: 
      shutil.move(name, 'your target path') 
1

Das ist, was Sie suchen Ich glaube:

import os 
import shutil 
moving_dict = { 
    "_w15": "D:\\Winter 15\\", 
    "_s15": "D:\\Summer 15\\" 
} 

os.chdir('D:\\Accounting (9706)') 
for root, dirs, files in os.walk('D:\\Accounting (9706)', topdown=False): 
    for name in files: 
     for short, dest in moving_dict.items(): 
      if short in name: 
       shutil.move(name, dest) 
       break 

     else: 
      print("Short name wasn't found in "+name) 
Verwandte Themen