2016-05-22 17 views
-1

Вид нового для python. Но после поиска и попытки разархивировать некоторые папки, переименуйте их, у которых нет статических имен. Например, файл New_05222016. #s - дата и всегда меняется. Я хочу, чтобы это была распакованная папка с надписью «Новый».Распаковка и переименование файлов/папок

Это то, что у меня есть до сих пор. Он будет распаковать мой файл, но не переименует его.

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') 

если попробовал другие способы. Например, просто os.rename и введите его. Но я не понимаю, что делать.

ответ

0

os.rename() будет работать нормально, просто укажите полный путь.

Я изменил ваш пример, используя os.listdir(), чтобы сохранить имя распакованного каталога и затем переименовать его с помощью os.rename(). Я также использовал re, чтобы оставить имя zipped-файла неповрежденным.

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")) 

Надеюсь, это поможет!

Смежные вопросы