【问题标题】:OSError: [Errno 30] Read-only file system: '/User'. macOS CatalinaOSError:[Errno 30] 只读文件系统:'/User'。 macOS 卡塔利娜
【发布时间】:2020-11-15 00:22:03
【问题描述】:

我正在为下载文件夹编写 sorter。我收到此错误,我尝试更改权限:
chmod: Unable to change file mode on Users: Operation not permitted

import os

from_dir = os.path.dirname('/Users/user/Downloads/')
working_dir = os.walk(from_dir)
to_dir = os.path.dirname('/User/user/Downloads/New Folder/')


def move(folder):
    for roots, dirs, files in folder:
        for file in files:
            src_folder = from_dir + '/' + file
            to_folder = to_dir + '/' + file
            if not os.path.exists(to_dir):
                os.makedirs(to_dir)
            os.rename(src_folder, to_folder)


move(working_dir)

也许还有另一种方法可以编写此代码而无需触及根文件夹?

完全错误:

Traceback (most recent call last):
  File "/Users/beknazarnurbek/Documents/PycharmProjects/Move Files/move.py", line 19, in <module>
    move(working_dir)
  File "/Users/beknazarnurbek/Documents/PycharmProjects/Move Files/move.py", line 14, in move
    os.makedirs(to_dir)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/os.py", line 211, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.7/lib/python3.7/os.py", line 221, in makedirs
    mkdir(name, mode)
OSError: [Errno 30] Read-only file system: '/User'

【问题讨论】:

    标签: python macos macos-catalina chmod python-os


    【解决方案1】:

    您已设置此文件夹的可写权限。只需在终端 chmod 中使用:

    chmod -R 777 /absolute/path/to/your/folder
    

    【讨论】:

    • 无论您希望完成什么,chmod 777 都是错误危险的。您将希望恢复到尽快获得合理的权限(对于您的用例,可能是chmod 755),如果您在面向公众的系统上拥有全球可写的系统文件,至少要调查它是否可能被破坏并用作闯入的支点您组织的网络。
    【解决方案2】:

    要添加到已经存在的答案: 您不能写入“输入”目录,因为它是只读的。 所以你必须写到另一个目录,比如当前目录之前的那个。

    而不是写入用户/本地/当前 在这种情况下,尝试访问当前本地目录之前的目录。

    【讨论】:

      【解决方案3】:

      如果您正在运行 Windows 10 或 11 和 linux 的双引导系统,请在 Windows 中禁用“打开快速启动”。

      【讨论】:

      • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
      【解决方案4】:

      刚刚删除了os.path.dirname,它起作用了。

      在我删除 os.path.dirname 后,它起作用了,但不是我所期望的。然后试图解决这个问题,我搞砸了文件系统权限,只是重新安装了操作系统。现在它工作正常。

      【讨论】:

      • 那么这并不是问题的真正答案。在我看来,实际问题是您的文件系统以只读方式安装(如错误消息中所述)并且重新安装操作系统显然解决了您的问题。顺便说一句:重新安装太过分了,您可能已经更改了安装选项来解决问题而无需完全重新安装。
      猜你喜欢
      • 2020-05-19
      • 2021-06-19
      • 2022-11-23
      • 2021-11-19
      • 2018-10-05
      • 2022-06-23
      • 2020-07-01
      • 2018-10-05
      • 2013-06-19
      相关资源
      最近更新 更多