我试图复制和重命名一些PDF的绝对路径。
ie:c:\users\andrew\pdf\p.pdf被复制到c:\users\pdf\ORGp.pdf
在目录p.pdf和ORGp.pdf中留下两个文件
在过去的一个小时里,我一直在研究这个问题,但我似乎无法解决这个问题。
是否有更多的pythonic方法来完成它,然后将字符串拆分成一个列表,并在最后一个元素上添加ORG之后重新加入它们?
在windows 8上使用python2.7。
发布于 2014-09-19 07:10:54
你的问题有点模棱两可,但我还是会尽力回答的。
这是一个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上用Python2.7.7测试了这个脚本,但我认为它也应该在Windows上很好地工作。
发布于 2014-09-19 05:11:07
你可以试试
import os
.......some logic.....
os.rename(filename, newfilename)发布于 2014-09-19 07:16:31
将字符串拆分成一个列表并重新连接(在从列表中删除'andrew‘并将'ORG’前缀为最后一个元素之后)是非常Pythonic的。这是一个明确而明显的方法。
您可以使用标准的str和list方法来完成它。但是,os.path模块中有各种专用的文件路径操作函数,您应该熟悉这些函数,但是当您确信正在处理的所有文件名都正常时,str和list方法就可以了。os.path还有其他有用的与文件相关的功能:您可以检查文件是否存在,是文件还是目录,获取文件的时间戳等等。
要在生成新名称后实际复制文件,请使用舒蒂尔.copyfile()。您还可能希望首先使用os.path.exists()检查该文件是否还不存在。不幸的是,一些元数据在这个过程中丢失了,例如shutil文档中的警告中提到的文件所有者。
https://stackoverflow.com/questions/25926742
复制相似问题