2016-05-03 14 views
1

Ich habe vor kurzem einen Ordner wiederhergestellt, den ich versehentlich gelöscht hatte. Es hat .jpg und .tar.gz Dateien. Alle Dateien haben jetzt jedoch eine Art Hash-Erweiterung, die für jede Datei unterschiedlich ist. In den Ordnern befinden sich mehr als 600 Dateien. So Beispiel Namen wäre:Entfernen von zufällig generierten Dateierweiterungen aus JPG-Dateien mit Python

IMG001.jpg.3454637876876978068 
IMG002.jpg.2345447786787689769 
IMG003.jpg.3454356457657757876 

und

folder1.tar.gz.45645756765876 
folder2.tar.gz.53464575678588 
folder3.tar.gz.42345435647567 

Ich mag würde ein Skript haben, die wiederum gehen könnte (vielleicht kann ich Erweiterung angeben oder es können zwei Iterationen haben, eine durch die. jpg Dateien und die andere durch die .tar.gz) und bereinigen den letzten Teil des Dateinamens beginnend mit der. direkt vor der Nummer. Also die letzten Dateinamen würde in .jpg enden und .tar.gz

Was ich bisher in Python haben:

import os 

def scandirs(path): 
    for root, dirs, files in os.walk(path): 
     for currentFile in files: 
      os.path.splitext(currentFile) 

scandirs('C:\Users\ad\pics') 

Offensichtlich funktioniert es nicht. Ich würde jede Hilfe schätzen. Ich würde auch überlegen, ein Bash-Skript zu verwenden, aber ich weiß nicht, wie ich das machen soll.

+0

Sie scheinen auf Windows zu sein; Ich bezweifle, dass Sie ein Bash-Skript wollen, um mit diesem Problem umzugehen. – Anonymous

Antwort

0

shutil.move(currentFile,os.path.splitext(currentFile)[0])

zumindest glaube ich ...

0

Hier ist, wie ich es tun würde, mit regulären Ausdrücken:

import os 
import re 

pattern = re.compile(r'^(.*)\.\d+$') 


def scandirs(path): 
    for root, dirs, files in os.walk(path): 
     for currentFile in files: 
      match = pattern.match(currentFile) 
      if match: 
       os.rename(
        os.path.join(root, currentFile), 
        os.path.join(root, match.groups(1)[0]) 
       ) 

scandirs('C:/Users/ad/pics') 
0

Da Sie mit getaggt gebe ich Ihnen eine Antwort Dadurch wird die letzte Erweiterung für alle Dateien/Verzeichnisse in einem Verzeichnis entfernt:

+0

würde ich das im aktuellen Verzeichnis ausführen? –

+0

@TendekaiMuchenje Ja – andlrc

Verwandte Themen