我正在编写一个简单的脚本,在文件夹中搜索PDF列表。找到匹配的PDF后,脚本应将PDF复制到另一个文件夹。但是,它只会在没有数据的情况下复制它们。它们读取0kb并且不在Acrobat中打开。这是在Windows 10上。
shutil.copy,shutil.copy2和shutil.copyfile都给出了相同的结果。具有正确名称但没有数据的PDF列表。如果我硬编码文件名只做一个,它工作正常。我真的不能将python函数传递给路径的连接字符串吗?这是垃圾。 shutil文档说复制功能的路径应该是字符串。
newstate = dict with key\value mapping pairs
original = input
changed = original->after changing
while changed != original:
changed = changed->after changing
print changed
示例输出:
id = ['1','2','3']
os.chdir("C:/msds/")
for file in glob.glob("*.pdf"):
# split file's name from extension
file_name = os.path.splitext(file)[0]
# find if file is in the list of ones to search for
if file_name in id:
s = os.path.join("C:/msds/", file)
d = os.path.join("C:/msds/deluxe/", file)
shutil.copy(s,d)
先前对路径字符串进行硬编码,但现在由于某种原因它没有。我放弃了。我只能得出结论,Python不适合Windows文件操作,将来有这个问题的人应该使用另一种语言。
答案 0 :(得分:0)
正如Lukasz Rogalski所说,Windows使用反斜杠而不是正斜杠。导入os并在字符串连接中使用os.sep更好。以下是我编写的脚本的一部分,该脚本将查看两个目录并将所有较新的文件复制到另一个文件夹中。
import os
def GetFiles(dir):
dict = {}
for subdir, dirs, files in walk(dir):
for filename in files:
filepath = subdir + os.sep + filename
filelocal = filepath[len(dir):]
modTime = getmtime(filepath)
dict[filelocal] = (modTime, filepath)
return dict