OSError: [Errno 30] 只读文件系统:"/User"。macOS 卡特琳娜



我正在为下载文件夹编写分类器。我收到此错误,我尝试更改权限:
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'

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

要添加到已存在的答案中:你不能写信给";输入";目录,因为它是只读的。因此,您将不得不写入另一个目录,就像当前目录之前的那个目录。

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

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

您已经设置了对此文件夹的可写权限。仅用于终端chmod:

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

刚刚删除os.path.dirname,它就工作了。

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

最新更新