在Windows python中重命名/复制

时间:2014-09-19 05:05:09

标签: python

我正在尝试使用绝对路径复制和重命名某些PDF。

即:c:\users\andrew\pdf\p.pdf被复制到c:\users\pdf\ORGp.pdf

将两个文件留在目录p.pdfORGp.pdf

过去一小时我一直在研究这个问题,我似乎无法确定它。

有更多的pythonic方法,然后将字符串拆分成列表并在最后一个元素上添加ORG后重新加入它们吗?

在Windows 8上使用python 2.7。

4 个答案:

答案 0 :(得分:1)

你的问题有点含糊不清,但无论如何我都会尽力回答。

这是一个python代码示例,它将在新名称下复制,在脚本开头指定的特定文件夹下的所有文件:

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上也可以很好地工作。

答案 1 :(得分:0)

你可以尝试

import os

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

os.rename(filename, newfilename)

答案 2 :(得分:0)

将字符串拆分为一个列表并重新加入(从列表中删除'andrew'并将'ORG'添加到最后一个元素前) 非常Pythonic。这是一种明确而明显的方法。

您可以使用标准strlist方法来执行此操作。但是,您应该熟悉的os.path模块中有各种专用文件路径操作函数,但是当您确定所有文件名时,strlist方法都可以。你的处理是理智的。 os.path还有其他有用的文件相关功能:您可以检查文件是否存在,文件或目录是否存在,获取文件的时间戳等。

要在生成新名称后实际复制文件,请使用shutil。copyfile()。您可能还希望首先使用os.path.exists()检查该文件是否已存在。遗憾的是,在shutil文档中的警告中提到了一些元数据在此过程中丢失,例如文件所有者。

答案 3 :(得分: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''