python OSError:[Errno 30] Read-only file system:'/User'. macOS Catalina

s8vozzvw  于 2023-06-04  发布在  Python
关注(0)|答案(5)|浏览(1184)

我正在为下载文件夹编写排序器。我得到这个错误,我试图更改权限:
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'
ldxq2e6h

ldxq2e6h1#

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

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

ttisahbt2#

要添加到现有答案,请执行以下操作:不能写入“input”目录,因为它是只读的。因此,您必须写入另一个目录,就像当前目录之前的目录一样。
不要写入user/local/current,而是尝试访问current之前的目录,在本例中是本地目录。

u3r8eeie

u3r8eeie3#

这个错误信息有点误导。在这种情况下,问题是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。这是不可写的。这导致了错误消息。

zwghvu4y

zwghvu4y4#

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

h7appiyu

h7appiyu5#

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

相关问题