OSX文件名中的特殊字符?(Python os.rename)

2 投票
2 回答
3469 浏览
提问于 2025-04-15 16:58

我正在尝试在OSX上用一个Python脚本自动重命名一些文件。但是我在处理特殊字符,比如斜杠等时遇到了问题:

oldname = "/test"
newname = "/test(1\/10)"
os.rename(oldname, newname)

我觉得我可能遇到了编码问题。不过我尝试了不同的方法,比如用re.escape或者使用UTF-8的unicode编码,但都没有成功。你能给我一点建议吗?

谢谢!
马尔科

2 个回答

0

如果你想重命名文件夹 '/test',你需要以管理员身份运行 Python,否则你没有权限去更改根目录下的东西。此外,你在新名字中使用的斜杠是行不通的,因为 Python 会试图找到一个名为 "/test(1" 的目录,所以你得去掉这个斜杠。还有,下面这段来自 Python 文档的信息可能会对你有帮助。

将文件或目录从 src 重命名为 dst。如果 dst 是一个目录,会出现 OSError 错误。在 Unix 系统中,如果 dst 已经存在并且是一个文件,且用户有权限,它会被静默替换。如果 src 和 dst 在不同的文件系统上,操作可能会失败。如果成功,重命名将是一个原子操作(这是 POSIX 的要求)。在 Windows 系统中,如果 dst 已经存在,即使它是一个文件,也会出现 OSError 错误;当 dst 指向一个已存在的文件时,可能无法实现原子重命名。适用范围:Unix 和 Windows。

2

大多数文件系统都有一个共同点,那就是它们不允许在文件名中使用目录分隔符(斜杠)。

不过,在Mac OS X系统中,你可以让文件名在查找器中看起来像是有斜杠,你可以试着把斜杠替换成:

撰写回答