2009-03-13 16 views
5

Ich habe ein Verzeichnis voller Dateien, von denen einige ein Und-Zeichen in ihren Namen haben. Ich möchte alle Dateien mit kaufmännischen Und-Zeichen umbenennen und jedes Und-Zeichen durch ein Plus (+) ersetzen. Ich arbeite mit ungefähr 10k Dateien. Was wäre die beste Methode, dies zu tun?Dateien umbenennen, Python/Jython

+0

Ist es ein flaches Verzeichnis von 10K-Dateien oder ein Verzeichnisbaum mit Unterverzeichnissen? –

Antwort

13
import glob, os 
for filename in glob.glob(os.path.join(yourPath, "*&*")): 
    os.rename(filename, filename.replace('&','+')) 
+1

Iglob wäre hier besser geeignet – SilentGhost

+0

Hat die Freiheit genommen, die Zeichenfolge-Verkettung in einen os.path.join() - Aufruf für die Übersichtlichkeit und Portabilität zu ändern. – unwind

+0

@SilentGhost - guter Punkt, aktualisiert. @unwind - wahr, rate ich bin zu UNIX-centric. – vartec

2
import os 
directory = '.' 
for file in os.listdir(directory): 
    if '&' in file : 
     os.rename(file, file.replace('&', '+')) 

ersetzen directory mit Ihrem eigenen Weg.

7

Wenn Sie Verzeichnisse haben:

import os 
for dirpath, dirs, files in os.walk(your_path): 
    for filename in files: 
     if '&' in filename: 
      os.rename(
       os.path.join(dirpath, filename), 
       os.path.join(dirpath, filename.replace('&', '+')) 
      ) 
+0

Worin besteht der Sinn des Listenverständnisses in diesem Fall? Eine einfache Schleife würde ausreichen. – jfs

+0

Muss es einen Punkt geben? Ich könnte hier auch eine Schleife verwenden, aber die if-Syntax scheint hinterher etwas netter zu sein, meinst du nicht? –

+0

10K Liste ohne Grund ist der Punkt. Eine solche Formatierung könnte zu Fehlern führen, siehe z. B. das Komma in der Nähe von "+")). – jfs