使用shutil在Python中移动文件

3

我知道有一些关于如何在Python中移动文件的帖子,但是我有点困惑。我正在开发一个程序,其中有一个名为test.txt的文件。

文件路径是:C:\Users\user\Desktop\Project1\Project1
我想将它移动到:C:\Users\user\Documents\ProjectMoved
我尝试了下面所示的不同变体:

src="C:\\Users\\user\\Desktop\\Project1\\Project1\\test.txt"
dst="C:\\Users\\user\\Documents\\ProjectMoved"
shutil.move(src, dst)

我一直收到“目录中没有此文件”的错误。

我想知道是否有人能够帮我找出正确的移动文件方式。


C:\Users\user\Documents\ProjectMoved 存在吗?您可能需要创建它。 - Aran-Fey
dst 没有正确引用 - 前面有太多的 "s。 - AlG
@Rawing 是的,它确实存在。 - csciBeginner
你是否正在尝试将文件test.txt移动到名为ProjectMoved的目录或文件中? - Maximilian Peters
2个回答

5

建议先检查文件是否存在,然后尝试使用os.path.join指定路径:

import shutil
import os
from os.path import join

src = join('/', 'Users', 'username', 'Desktop', 'a.pdf')
dst = join('/', 'Users', 'username', 'Documents', 'a.pdf')

shutil.move(src, dst)

您可以先验证src是否存在:

os.path.exists(src)
>>> True

谢谢,它起作用了。你能解释一下 join 做什么吗?以及为什么我们需要“/”? - csciBeginner
还有没有一种方法可以在Python中搜索整个计算机以查找特定文件? - csciBeginner
如果你刚开始学习Python,要注意join函数是从os.path模块中导入的。因此,你可以删除from os.path import join这一行,然后在上面的脚本中使用os.path.join代替join,但最好在其他地方阅读有关Python导入模块的内容(这实际上是一个单独的问题)。使用Python搜索文件是一个单独的问题 - 在SO上搜索答案。 - p-robot
谢谢,你真的很有帮助。我希望我能给你更多的积分。 - csciBeginner
src = os.path.join('/') 会将变量 src 设置为根目录的路径名。这可能不是您想要的,最好不要操作根目录。指向桌面或您自己的文档文件夹可能更安全。 - p-robot
显示剩余3条评论

0
如果您想将多个 .txt 文件从文件夹 A 移动到文件夹 B,也可以通过这种方式解决此问题。由于您正在移动 .txt 文件,因此可以将此原则应用于您的问题。
import os
import shutil
os.chdir('C:\\') 

dir_src = ("C:\\Folder A\\")
dir_dst = ("C:\\Folder B\\")

for filename in os.listdir(dir_src):
    if filename.endswith('.txt'):
        shutil.move( dir_src + filename, dir_dst)
    print(filename)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接