【问题标题】:Copy certain files to other folder using Python ( File Management in Python )使用 Python 将某些文件复制到其他文件夹(Python 中的文件管理)
【发布时间】:2018-07-11 08:17:19
【问题描述】:

如果某个文件存在,我想检查一个文件夹和所有子文件夹。如果存在,那么我想将其复制到另一个文件夹中。我尝试了以下东西

def copy_files(src, dest):
    files = os.listdir(src)
    for f in files:
        shutil.copy(src +f , dest)

for root, dirs, files in os.walk(my_path):
    for f in files:
        if f.endswith(".7z"):
            print("found files: " , f)
            copy_files(my_path, arch_dest)

在 copy_files 功能上有效。但它在 for 循环中不起作用。

我收到以下错误:

权限被拒绝:'./data/f_1'

我做错了什么?

复制功能适用于其他文件夹。但在这个循环中,它不起作用。我需要让它在循环内工作。

更新:

我假设问题更多出在路径上,我检查了 for 循环内部,它显示了它所在的主目录。 print(os.getcwd())

然后在检查文件时是否需要转到该文件夹​​?

【问题讨论】:

  • 你收到我的问题了吗? @Marcus.Aurelianus
  • 你是在 Linux 上运行这个吗?
  • Windows 10,不是 linux
  • 要么使用 sudo 运行脚本,要么从“以管理员身份”启动的 shell 运行脚本?
  • 不,它说没有这样的文件。虽然有文件@jc1850

标签: python python-3.x


【解决方案1】:

终于找到了解决办法。我知道它是因为根/路径。它与admin/sudo 的东西无关。

可以按如下方式进行。

for r,d,files in os.walk(my_path):
    for f in files:
        print(r)
        shutil.copy(r + "/" + f, dest_path)

【讨论】:

    【解决方案2】:

    您需要以 sudo 用户身份运行 python 脚本

    e.g. sudo python filename.py
    

    【讨论】:

    • sudo 在 windows 中不存在
    【解决方案3】:

    尝试在循环周围使用 try/except 来忽略您无权搜索的文件:

    try:
        for root, dirs, files in os.walk(my_path):
            for f in files:
                if f.endswith(".7z"):
                    print("found files: " , f)
                    copy_files(my_path, arch_dest)
    except OSError:
        pass
    

    【讨论】:

    • ./data/f_1 是要复制的目标还是文件?
    • 文件夹中的文件
    • 根文件夹有多个目录。代码需要检查每个文件夹并找到文件
    • 回溯是否还有其他内容,例如导致错误的行?
    • 认为它可能不会,所以由于某种原因您无权对文件执行某些操作,您知道是哪一行导致了问题吗?是os.walk(my_path) 电话吗?
    猜你喜欢
    • 2021-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    相关资源
    最近更新 更多