Python Shuttle不会复制文件

问题描述 投票:0回答:1

我正在编写一个简单的脚本,该脚本在文件夹中搜索PDF列表。找到匹配的PDF后,脚本应将PDF复制到另一个文件夹。但是,它将仅复制它们而没有数据。他们读取0kb,并且无法在Acrobat中打开。这是在Windows 10上。

shutil.copy,shutil.copy2和shutil.copyfile都给出相同的结果。具有正确名称但无数据的PDF列表。如果我将文件名硬编码为仅做一个,则可以正常工作。我严重不能为路径传递python函数的串联字符串?那是垃圾Shutil文档说复制函数的路径应该是字符串。

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)

样本输出:

print(s)
print(d)

C:/msds/032-0200.pdf
C:/msds/deluxe/032-0200.pdf
C:/msds/032-0950.pdf
C:/msds/deluxe/032-0950.pdf
C:/msds/040-1300.pdf
C:/msds/deluxe/040-1300.pdf
C:/msds/052-0600.pdf
C:/msds/deluxe/052-0600.pdf

以前很难对路径字符串进行编码,但是现在由于某种原因,它不再可用。我放弃了我只能得出结论,Python不适合Windows文件操作,将来任何有此问题的人都应该使用另一种语言。

python file shutil
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.