Python将文件和目录从一个文件夹移动到另一个文件夹

理查德

我想将具有覆盖功能的python文件和目录从一个目录移动到另一个目录。

我从以下代码开始:

        #moving files from progs
        path = tempfolder + 'progs/'
        for dirs,files in os.listdir(path):
                 for f in files:
                        shutil.move(os.path.join(path, f) , os.path.join(compteurfolder, f))

因此,目前,我仅尝试移动文件,但出现以下错误:

    for dirs,files in os.listdir(path):
ValueError: too many values to unpack

我猜这是因为我有目录和文件,但是我也将如何移动目录?以及如何确保它可以覆盖另一个文件夹中的文件?

希望能对您有所帮助。

阿巴内特

失败的原因:

for dirs,files in os.listdir(path):

os.listdir只是返回文件名列表。因此,每个元素都是一个字符串,您正在尝试将该字符串分解为两个变量。比较一下:

a, b = (1, 2, 3, 4, 5, 6, 7, 8)
for a, b in [(1, 2, 3, 4, 5, 6, 7, 8), (9, 10)]
dirs, files = "spam.txt"
for dirs, files in ["spam.txt", "eggs.dat"]

在每种情况下,这都是完全相同的错误-您无法将8项内容放入2个变量中。

同时,如果listdir只是返回文件名,您怎么知道常规文件的名称,目录的名称?您必须询问-例如,通过使用isdir

所以:

for filename in os.listdir(path):
    if os.path.isdir(filename):
        # do directory stuff
    else:
        # do regular file stuff

(但是请注意,如果您有符号链接,这仍然会令人困惑……)


同时,“常规文件内容”是什么意思?

好吧,假设你没有一个目录(或一个符号链接到一个目录)与作为文件你想搬到那里,因为文档的名称相同shutil.move的发言权,os.renameshutil.copy2将被使用。如果您不在Windows上,那么这是完美的选择-如果您有权覆盖目标,那么您将获得权限错误。但是,如果您使用的Windows,os.rename则如果目标已经存在将失败。

如果您使用的是3.3或更高版本,则可以通过复制shutil.move*并os.replace改为使用它解决此问题,如rename文档所暗示的那样。否则,您将必须先删除目标,然后才能重命名源。

*某些stdlib模块(包括shutil)旨在用作示例代码以及可用的帮助程序。在那种情况下,在模块文档的顶部,将有一个Source code:链接。


那“目录东西”呢?好吧,如果将目录移动spam到目标eggs/spam,并且eggs/spam已经作为目录存在,那么最终将移动到eggs/spam/spam

这不足为奇,因为mv在Unix和moveWindows这是完全相同的事情,而这正是我们shutil要模拟的事情

因此,您需要shutil.rmtree在移动源之前删除目标(这次使用)。


这意味着最简单的操作可能是不区分文件和目录,Windows和Unix或其他任何东西。只是这样做:

for filename in os.listdir(path):
    target = os.path.join(compteurfolder, filename)
    try:
        shutil.rmtree(target)
    except NotADirectoryError:
        try:
            os.unlink(target)
        except FileNotFoundError:
            pass
    shutil.move(os.path.join(path, filename), target)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python将文件和目录从一个文件夹移动到另一个文件夹

来自分类Dev

Google云端存储-将文件从一个文件夹移动到另一个文件夹-使用Python

来自分类Dev

批量将文件移动到Windows中的另一个文件夹/目录?

来自分类Dev

使用sudo将文件夹移动到另一个文件夹

来自分类Dev

将文件从一个文件夹从文本文件的文件名列表移动到另一个文件夹

来自分类Dev

使用python将shapefile从一个文件夹移动到另一个文件夹

来自分类Dev

将文件从一个文件夹移动到另一个C#

来自分类Dev

将整个文件夹从其父文件夹移动到另一个文件夹

来自分类Dev

如何将多个文件夹移动到另一个目录?

来自分类Dev

Applescript如何将文件从一个文件夹移动到另一个文件夹。无法将整数类型错误

来自分类Dev

将文件夹和子文件夹移动到另一个路径

来自分类Dev

在S3中将文件从一个文件夹移动到另一个文件夹

来自分类Dev

如何将某些类型的文件从一个文件夹移动到另一个文件夹

来自分类Dev

每5分钟将文件从一个文件夹移动到另一个文件夹的批处理程序

来自分类Dev

我已经设置了文件权限,但是我无法将图像从一个文件夹移动到另一个文件夹

来自分类Dev

根据列表将所有文件从一个文件夹移动到另一个文件夹

来自分类Dev

将文件从一个文件夹移动到另一个具有相同名称的文件夹

来自分类Dev

IOException同时将文件从一个文件夹移动到另一个文件夹

来自分类Dev

Powershell将文本文件从一个文件夹移动到另一个文件夹

来自分类Dev

如何将具有特定名称的文件从一个文件夹移动到另一个文件夹

来自分类Dev

如何将FTP服务器中的CSV文件从一个文件夹移动到另一个文件夹?

来自分类Dev

使用shutil将文件从一个文件夹移动到另一个文件夹时出错

来自分类Dev

如何将文件从一个文件夹移动到另一个文件夹?

来自分类Dev

将一个目录中的子文件夹移动到另一个目录

来自分类Dev

将特定的电子邮件从一个子文件夹移动到另一个子文件夹

来自分类Dev

将特定子文件夹中的文件移动到另一个子文件夹

来自分类Dev

重命名文件并将文件从一个文件夹移动到另一个文件夹(Windows批处理)

来自分类Dev

根据文件大小将xml文件从一个文件夹移动到另一个文件夹

来自分类Dev

如何使用Java将文件移动到另一个文件夹?

Related 相关文章

  1. 1

    Python将文件和目录从一个文件夹移动到另一个文件夹

  2. 2

    Google云端存储-将文件从一个文件夹移动到另一个文件夹-使用Python

  3. 3

    批量将文件移动到Windows中的另一个文件夹/目录?

  4. 4

    使用sudo将文件夹移动到另一个文件夹

  5. 5

    将文件从一个文件夹从文本文件的文件名列表移动到另一个文件夹

  6. 6

    使用python将shapefile从一个文件夹移动到另一个文件夹

  7. 7

    将文件从一个文件夹移动到另一个C#

  8. 8

    将整个文件夹从其父文件夹移动到另一个文件夹

  9. 9

    如何将多个文件夹移动到另一个目录?

  10. 10

    Applescript如何将文件从一个文件夹移动到另一个文件夹。无法将整数类型错误

  11. 11

    将文件夹和子文件夹移动到另一个路径

  12. 12

    在S3中将文件从一个文件夹移动到另一个文件夹

  13. 13

    如何将某些类型的文件从一个文件夹移动到另一个文件夹

  14. 14

    每5分钟将文件从一个文件夹移动到另一个文件夹的批处理程序

  15. 15

    我已经设置了文件权限,但是我无法将图像从一个文件夹移动到另一个文件夹

  16. 16

    根据列表将所有文件从一个文件夹移动到另一个文件夹

  17. 17

    将文件从一个文件夹移动到另一个具有相同名称的文件夹

  18. 18

    IOException同时将文件从一个文件夹移动到另一个文件夹

  19. 19

    Powershell将文本文件从一个文件夹移动到另一个文件夹

  20. 20

    如何将具有特定名称的文件从一个文件夹移动到另一个文件夹

  21. 21

    如何将FTP服务器中的CSV文件从一个文件夹移动到另一个文件夹?

  22. 22

    使用shutil将文件从一个文件夹移动到另一个文件夹时出错

  23. 23

    如何将文件从一个文件夹移动到另一个文件夹?

  24. 24

    将一个目录中的子文件夹移动到另一个目录

  25. 25

    将特定的电子邮件从一个子文件夹移动到另一个子文件夹

  26. 26

    将特定子文件夹中的文件移动到另一个子文件夹

  27. 27

    重命名文件并将文件从一个文件夹移动到另一个文件夹(Windows批处理)

  28. 28

    根据文件大小将xml文件从一个文件夹移动到另一个文件夹

  29. 29

    如何使用Java将文件移动到另一个文件夹?

热门标签

归档