2016-05-03 10 views
0

Ich habe Schwierigkeiten, ein Python-Skript zu erstellen, das Dateierweiterungen in einem Ordner umbenennt und dies auch in Unterverzeichnissen tut. Hier ist das Skript, das ich bis jetzt habe; es kann nur Dateien im obersten Verzeichnis umbenennen:Dateierweiterungen rekursiv umbenennen

import os 

def process_directory(root): 

    for item in os.listdir(root): 
     if os.path.isdir(item): 
      print("is directory", item) 
      process_directory(item) 
     else: 
      print(item) 
      #Do stuff 

process_directory(os.getcwd()) 

Obwohl dies nicht wirklich notwendig ist:

#!/usr/bin/python 
# Usage: python rename_file_extensions.py 

import os 
import sys 

for filename in os.listdir ("C:\\Users\\username\\Desktop\\test\\"): # parse through file list in the folder "test" 

    if filename.find(".jpg") > 0: # if an .jpg is found 

      newfilename = filename.replace(".jpg","jpeg") # convert .jpg to jpeg 

      os.rename(filename, newfilename) # rename the file 
+1

Mögliche doppelte modifizierte http://stackoverflow.com/questions/5817209/browse-files-and-subfolders -in-python – mvelay

Antwort

2
import os 
import sys 

directory = os.path.dirname(os.path.realpath(sys.argv[0])) #get the directory of your script 
for subdir, dirs, files in os.walk(directory): 
for filename in files: 
    if filename.find('.jpg') > 0: 
    subdirectoryPath = os.path.relpath(subdir, directory) #get the path to your subdirectory 
    filePath = os.path.join(subdirectoryPath, filename) #get the path to your file 
    newFilePath = filePath.replace(".jpg",".jpeg") #create the new name 
    os.rename(filePath, newFilePath) #rename your file 

I Jaron Antwort mit dem Pfad zur Datei und dem vollständigen Beispiel Umbenennen der Datei von

+0

Genau das suche ich! Setzen Sie dies in den Stamm Ihres Verzeichnisses und führen Sie es aus. Es wird die entsprechende Erweiterung für alles in den Stamm- und Unterverzeichnissen ändern! Genial! – Moreless

1

Sie das Verzeichnis wie diese verarbeiten kann. Verwenden Sie einfach os.walk die

0

Machen Sie es wie dies durch alle Top-Level und weitere Verzeichnisse/Dateien iterieren wird:

for subdir, dirs, files in os.walk(root): 
    for f in files: 
     if f.find('.jpg') > 0: 
      #The rest of your stuff 

das tun sollte genau das, was Sie wollen.

Verwandte Themen