OSError: [Errno 30] 只读文件系统: '/User'。macOS Catalina

Bek*_*ulu 10 python macos chmod python-os macos-catalina

我正在为下载文件夹编写排序器。我收到此错误,我尝试更改权限:
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)
Run Code Online (Sandbox Code Playgroud)

也许还有另一种方法可以在不触及根文件夹的情况下编写此代码?

完整错误:

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'
Run Code Online (Sandbox Code Playgroud)

tee*_*bly 3

该错误消息有点误导。在这种情况下,问题是/UsermacOS 上没有目录。该目录名为/Users.

在下面的行中

to_dir = os.path.dirname('/User/user/Downloads/New Folder/')

用户应该是用户

to_dir = os.path.dirname('/Users/user/Downloads/New Folder/')

正在发生的事情是os.mkdirs()尝试User/. 这是不可写的。这是导致错误消息的原因。