操作系统错误:[Errno 30] 只读文件系统:“/User”。 macOS Catalina

问题描述 投票:0回答:6

我正在为下载文件夹编写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
6个回答
2
投票

该错误消息有点误导。在这种情况下,问题是 macOS 上没有

/User
目录。该目录名为
/Users
.

在下一行

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

用户应该是用户

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

发生的情况是

os.mkdirs()
正在尝试在
User
中创建目录
/
。这是不可写的。这导致了错误消息。


0
投票

添加到已有的答案: 您无法写入“输入”目录,因为它是只读的。 因此,您必须写入另一个目录,例如当前目录之前的目录。

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


0
投票

只需在设置中将“/static/”更改为“static/”,将“media/”更改为“media”即可。


0
投票

我在另一种情况下遇到了这个错误 - 我的硬盘上没有剩余空间。通过清理一些空间来解决。


-1
投票

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

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

-2
投票

刚刚删除

os.path.dirname
,它就起作用了。

删除后

os.path.dirname
它起作用了,但不是我期望的那样。然后试图解决这个问题,我弄乱了文件系统权限并重新安装了操作系统。现在效果很好。

© www.soinside.com 2019 - 2024. All rights reserved.