首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python shutils不会复制文件

Python shutils不会复制文件
EN

Stack Overflow用户
提问于 2015-11-25 03:09:32
回答 1查看 2.2K关注 0票数 0

我正在写一个简单的脚本,搜索一个文件夹的PDF列表。找到匹配的PDF后,脚本应将该PDF复制到另一个文件夹。但是,它将只复制它们,而不复制任何数据。它们的大小为0kb,无法在Acrobat中打开。这是在Windows10上。

shutil.copy、shutil.copy2和shutil.copyfile都给出了相同的结果。名称正确但没有数据的PDF列表。如果我将文件名硬编码为只做一次,它就能正常工作。我真的不能向python函数传递路径的连接字符串吗?那是垃圾。shutil文档说复制函数的路径应该是字符串。

代码语言:javascript
运行
复制
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)

示例输出:

代码语言:javascript
运行
复制
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文件操作,将来遇到这个问题的任何人都应该使用另一种语言。

EN

回答 1

Stack Overflow用户

发布于 2020-05-20 22:34:06

正如Lukasz Rogalski评论的那样,Windows使用的是反斜杠而不是正斜杠。导入os并在字符串连接中使用os.sep要好得多。下面是我写的一个脚本的一部分,它将查看两个目录,并将任何较新的文件复制到另一个文件夹中。

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33901866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档