2016-05-22 14 views
-1

Art von neu zu Python. Aber nach dem Suchen und dem Versuch, einige Ordner zu entpacken, benennen Sie sie um, die keine statischen Namen haben. Zum Beispiel ist die Datei New_05222016. Die #s sind das Datum und das ändert sich immer. Ich möchte, dass es sich um einen entpackten Ordner mit der Bezeichnung "Neu" handelt.Entpacken und umbenennen von Dateien/Ordnern

Das ist, was ich bisher habe. Es wird meine Datei entpacken, aber nicht umbenennen.

import zipfile,fnmatch,os 

rootPath = r"C:/Users/Bob/Desktop/Bill" 
pattern = '*.zip' 
New = 'New*' 


for root, dirs, files in os.walk(rootPath): 
    for filename in fnmatch.filter(files, pattern): 
     print(os.path.join(root, filename)) 
     zipfile.ZipFile(os.path.join(root, filename)).extractall(os.path.join(root, os.path.splitext(filename)[0])) 

for root, dirs, files in os.walk(rootPath): 
    for filename in fnmatch.filter(dir,New): 
     os.rename(dir,'C:/Users/Bob/Desktop/Bill/New') 

wenn andere Wege ausprobiert werden. Wie nur os.rename und tippen Sie es aus. Aber ich weiß nicht, was ich tun soll.

Antwort

0

os.rename() wird gut funktionieren, stellen Sie nur sicher, den vollständigen Pfad anzugeben.

Ich habe Ihr Beispiel mit os.listdir() geändert, um den Namen des entpackten Verzeichnisses zu speichern und dann mit os.rename() umbenannt. Ich habe auch verwendet, um den Namen der gezippten Datei intakt zu lassen.

import zipfile,fnmatch,os, re 

rootPath = r"C:\Users\Bob\Desktop\Bill" 
pattern = '*.zip' 
New = 'New*' 

for root, dirs, files in os.walk(rootPath): 
    for filename in fnmatch.filter(files, pattern): 
     print(os.path.join(root, filename)) 
     zipfile.ZipFile(os.path.join(root,  filename)).extractall(os.path.join(root, os.path.splitext(filename)[0])) 

for dirName in os.listdir(rootPath): 
    if not re.search("zip", dirName): 
     os.rename(os.path.join(rootPath, dirName), os.path.join(rootPath,"New")) 

Ich hoffe, das hilft!