2014-09-19 2 views
0

Я пытаюсь скопировать и переименовать некоторые PDF-файлы с абсолютными путями.Переименование/копирование в windows python

т.е. c:\users\andrew\pdf\p.pdf, копируется в c:\users\pdf\ORGp.pdf

Оставив два файла в каталоге p.pdf и ORGp.pdf

Я работал над этим вопросом в течение последнего часа, и я не могу показаться, чтобы прибить его.

Есть ли более pythonic способ сделать это, разделив строку в список и присоединившись к ним после добавления ORG в последний элемент?

Использование Python 2.7 на Windows 8.

+3

Не могли бы вы поместить свой код? Это поможет понять, что вы пытаетесь и что не так. – Nilesh

ответ

1

Ваш вопрос немного неоднозначным, но я постараюсь ответить на него в любом случае.

Это питон пример кода, который будет копировать под новыми именами, все файлы в определенной папке, указанный в начале сценария:

import os 
import shutil 
folder_name = "c:\\users\\andrew\\pdf" 
for root_folder, _, file_names in os.walk(folder_name): 
    for file_n in file_names: 
     new_name = os.path.join(root_folder, "ORG" + file_n) 
     old_name = os.path.join(root_folder, file_n) 
     print "We will copy at ", new_name, old_name 
     shutil.copyfile(old_name, new_name) 

Этот код будет копировать и переименовывать список абсолют пути к файлам:

import os 
import shutil 
files_to_rename = ["c:\\users\\andrew\\pdf\\p.pdf", "c:\\users\\andrew\\pdf2\\p2.pdf"] 

for file_full_path in files_to_rename: 
    folder_n, file_n = os.path.split(file_full_path) 
    new_name = os.path.join(folder_n, "ORG" + file_n) 
    print "We will copy at ", new_name, file_full_path 
    shutil.copyfile(file_full_path, new_name) 

Я тестирование этого сценария на Mac OS, с Python 2.7.7, но я думаю, что он должен работать хорошо и на Windows.

0

Вы можете попробовать

import os 

.......some logic..... 

os.rename(filename, newfilename) 
+0

Как и ваша работа, Киран. :) Но Андрей хочет сохранить оригинал, поэтому 'rename()' 'здесь не очень подходит. –

0

Разбиение строки в список и воссоединение (после удаления 'andrew' из списка и префикса 'ORG' до последнего элемента) is довольно Pythonic. Это явный и очевидный способ сделать это.

Для этого вы можете использовать стандартные методы str и list. Тем не менее, в модуле os.path есть несколько различных функций манипуляции с файлами, с которыми вам следует ознакомиться, но методы str и list хороши, если вы уверены, что все имена файлов, которые вы обрабатываете, являются нормальными. os.path также имеет другие полезные функции, связанные с файлами: вы можете проверить, существует ли файл, будь то файл или каталог, получать отметки времени файла и т. Д.

Чтобы скопировать файл после создания нового имени , используйте shutil .copyfile(). Вы также можете сначала проверить, что файл еще не существует, используя os.path.exists(). К сожалению, некоторые метаданные теряются в этом процессе, например, владельцы файлов, как указано в предупреждении в документах shutil.

0

Это то, что я сделал, чтобы сделать переименование. Я не уверен, что это pythonic, но он работает.

split=fle.split('\\') 
    print split 
    pdf=split[len(split)-1] 
    pdf='ORG%s' % pdf 
    print pdf 
    del split[len(split)-1] 
    split.append(pdf) 
    fle1 = '\\'.join(split) 
    try: 
     shutil.copy(fle, fle1) 
    except: 
     print('failed copy') 
     return''