首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Skip文件已经存在

Skip文件已经存在
EN

Stack Overflow用户
提问于 2022-12-04 21:44:13
回答 1查看 15关注 0票数 0

我的桌面上有很多pdfs。我想运行python脚本将所有这些pdfs移动到一个文件夹中。

我正在测试一个脚本,我发现目标文件夹中已经存在一个文件。运行时的脚本表示该文件已经存在。

在这个场景中,如果文件存在,我想重写它。我该怎么叫舒蒂尔改写。

代码语言:javascript
复制
import os
import shutil
import glob

src = '/Users/myusername/Desktop'
dest = '/Users/myusername/Desktop/PDF'

os.chdir(src)
for i in glob.glob("*.pdf"):
    print(i)
    shutil.move(i,dest)

shutil.Error:目标路径'/Users/myusername/Desktop/PDF/test.pdf‘已经存在

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

发布于 2022-12-04 21:46:19

要告诉shutil.move()函数覆盖目标文件(如果它已经存在),可以使用shutil.move()函数的copy_function参数并将其设置为shutil.copy2()函数。这将导致shutil.move()函数使用shutil.copy2()函数将文件复制到目标,目标能够覆盖现有文件。

下面是一个示例,说明如何修改代码,以便在目标文件已经存在的情况下使用shutil.copy2()函数覆盖目标文件:

代码语言:javascript
复制
import os
import shutil
import glob

src = '/Users/myusername/Desktop'
dest = '/Users/myusername/Desktop/PDF'

os.chdir(src)
for i in glob.glob("*.pdf"):
    print(i)
    shutil.move(i, dest, copy_function=shutil.copy2)

或者,如果目标文件已经存在,可以使用os.replace()函数移动该文件并覆盖它。此函数可在Python3.3及更高版本中使用。下面是一个示例,说明如何使用os.replace()函数来移动文件并覆盖目标文件(如果该文件已经存在):

代码语言:javascript
复制
import os
import glob

src = '/Users/myusername/Desktop'
dest = '/Users/myusername/Desktop/PDF'

os.chdir(src)
for i in glob.glob("*.pdf"):
    print(i)
    os.replace(i, os.path.join(dest, i))

注意,os.replace()函数在Python2.x中不可用,因此如果使用Python2.x,则需要使用shutil.move()函数,并将copy_function参数设置为shutil.copy2()函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74681196

复制
相关文章

相似问题

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