我正在尝试使用绝对路径复制和重命名某些PDF。
即:c:\users\andrew\pdf\p.pdf
被复制到c:\users\pdf\ORGp.pdf
将两个文件留在目录p.pdf
和ORGp.pdf
过去一小时我一直在研究这个问题,我似乎无法确定它。
有更多的pythonic方法,然后将字符串拆分成列表并在最后一个元素上添加ORG后重新加入它们吗?
在Windows 8上使用python 2.7。
答案 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。这是一种明确而明显的方法。
您可以使用标准str
和list
方法来执行此操作。但是,您应该熟悉的os.path模块中有各种专用文件路径操作函数,但是当您确定所有文件名时,str
和list
方法都可以。你的处理是理智的。 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''