Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python更改文件夹权限_Python - Fatal编程技术网

Python更改文件夹权限

Python更改文件夹权限,python,Python,由于某种原因,这个python脚本现在不再工作。脚本是否在运行文件夹后将其权限更改为只读?它运行一次并删除文件夹中的所有文件,但当它再次运行时,由于脚本将文件夹上的权限更改为只读,导致Windows错误5访问被拒绝。我不明白它为什么会这样,或者如何避免它 问题是我没有写这个脚本,对python一无所知。您将如何更改它以避免此问题。请给我一个脚本中代码的例子,我不知道放在哪里。谢谢你的帮助 import os import shutil for root, dirs, files in os.w

由于某种原因,这个python脚本现在不再工作。脚本是否在运行文件夹后将其权限更改为只读?它运行一次并删除文件夹中的所有文件,但当它再次运行时,由于脚本将文件夹上的权限更改为只读,导致Windows错误5访问被拒绝。我不明白它为什么会这样,或者如何避免它

问题是我没有写这个脚本,对python一无所知。您将如何更改它以避免此问题。请给我一个脚本中代码的例子,我不知道放在哪里。谢谢你的帮助

import os
import shutil

for root, dirs, files in os.walk(eg.globals.tvzip):
    for f in files:
        os.remove(os.path.join(root, f))
    for d in dirs:
        shutil.rmtree(os.path.join(root, d))

for root, dirs, files in os.walk(eg.globals.tvproc):
    for f in files:
        os.remove(os.path.join(root, f))
    for d in dirs:
        shutil.rmtree(os.path.join(root, d))

如果你想删除一整棵苍蝇树,shutil.rmtree会为你做这件事-你不需要浏览删除它们的文件列表

如果您试图不删除顶级目录,则应添加一个检查。根据文档,您将获得顶级目录:

os.walktop,top-down=True,onerror=None,followlinks=False

产生 通过自上而下遍历目录树,可以查看目录树中的文件名 或者自下而上。对于树中以目录顶部为根的每个目录 包括top本身,它会产生一个三元组dirpath,dirnames, 文件名


除了脚本之外,是否可以将这些文件夹设置为只读?也许你正在删除它们,然后因为它们不存在而拒绝访问,或者其他什么东西正在以这种方式重新创建它们

我不管你是否写了这段代码,它毫无意义,试图让它工作而不修复它是一个愚蠢的想法

首先,如果要删除整个目录树,不要尝试遍历该树并在遍历之前删除每个子树。只需移除整棵树:

shutil.rmtree(eg.globals.tvzip)
shutil.rmtree(eg.globals.tvproc)
如果要删除树的所有内容,而不是根目录本身,请不要使用os.walk,只使用os.listdir:

这将删除由您的代码自行其是、试图保持一个目录处于打开状态以便遍历以及同时试图删除它所导致的任何错误

如果仍然出现错误,可能是因为某些文件是只读的,但也可能是因为其他程序打开了这些文件。唯一能够进行调试的方法是知道哪些文件,以便检查它们

您得到的异常应该包括输出失败的文件的完整路径名事实上,您在其他问题中显示了一个:

WindowsError: [Error 5] Access is denied: 'C:\\zDump\\TVzip\\Elem.avi'
那么,你怎么知道问题出在哪里呢

您可以在资源管理器中打开C:\zDump\TVzip并查看Elem.avi,看看它是否为只读。或者你也可以使用DOS提示符,如果你知道怎么做的话


要确定它是否由另一个程序保持打开状态,您需要一个第三方工具。GUI工具和命令行工具,都来自Sysinternal,由Microsoft发布,可能是最简单的。

昨天问了同样的问题……它们似乎都是一样的。你有什么理由相信这些文件已更改为只读?正如前面两个问题中告诉您的那样,如果任何程序在尝试删除某个文件时以默认共享权限打开了该文件,则在Windows中也会出现此错误。这甚至不是不可能的,考虑到你处理事情的奇怪方式,并试图从你自己下面删除它们,任何程序都是你自己的脚本。是的,同样的问题,但我没有说清楚,我实际上对python一无所知。我不知道如何插入你的建议。我希望有人能把他们的想法和他们的代码插入。我遵循了这个指南:非常感谢你。有了这个,我会追根究底的。再次感谢。
WindowsError: [Error 5] Access is denied: 'C:\\zDump\\TVzip\\Elem.avi'