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

发布于 2024-08-15 12:05:28 字数 247 浏览 2 评论 0原文

我正在尝试使用 python 脚本在 OSX 上自动重命名一些文件。但我无法使用正斜杠等特殊字符:

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

我认为我确实有编码问题。但使用 re.escape 或使用 UTF-8 unicode 编码的不同尝试对我来说并没有成功。你能给点提示吗?

谢谢! 马可

I am trying to rename some files automatically on OSX with a python script. But I fail to work with special characters like forward slash etc.:

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

I think I do have an encoding problem. But different tries with re.escape or using UTF-8 unicode encodings havent been successful for me. Would you have a hint?

Thanks!
Marco

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

最后的乘客 2024-08-22 12:05:28

大多数文件系统的共同点是它们不允许在文件名中使用目录分隔符(斜杠)。

也就是说,在 Mac OS X 中,您可以在 finder 中出现带斜杠的文件名,您可以尝试用 : 替换斜杠。

What most of the file systems have in common is that they do not allow directory separators (slashes) in filenames.

That said, in Mac OS X you can have file names appear with slashes in finder, you can try replacing slashes with :.

那支青花 2024-08-22 12:05:28

如果您尝试重命名文件夹“/test”,则需要以 root 身份运行 python,否则您将无权更改根目录中的内容。此外,新名称中的斜杠将不起作用,因为 python 将尝试查找目录“/test(1”,因此您必须放弃目录分隔符。另外,来自 python 文档的内容可能会有所帮助。

将文件或目录 src 重命名为 dst。如果 dst 是目录,则会引发 OSError。在 Unix 上,如果 dst 存在并且是一个文件,如果用户有权限,它将被静默替换。如果 src 和 dst 位于不同的文件系统上,则该操作可能会在某些 Unix 版本上失败。如果成功,重命名将是一个原子操作(这是 POSIX 要求)。在Windows上,如果dst已经存在,即使它是一个文件,也会引发OSError;当 dst 命名现有文件时,可能无法实现原子重命名。可用性:Unix、Windows。

If you're trying to rename the folder '/test' you'll need to run python as root, otherwise you won't have privileges to change stuff in the root. Furthermore the slash in your new name won't work as python will try find a directory "/test(1", so you'll have to let the directory separator go. Also this from the python documentation might be helpful.

Rename the file or directory src to dst. If dst is a directory, OSError will be raised. On Unix, if dst exists and is a file, it will be replaced silently if the user has permission. The operation may fail on some Unix flavors if src and dst are on different filesystems. If successful, the renaming will be an atomic operation (this is a POSIX requirement). On Windows, if dst already exists, OSError will be raised even if it is a file; there may be no way to implement an atomic rename when dst names an existing file. Availability: Unix, Windows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文