Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OSX文件名中的特殊字符?(Python os.rename)_Python_Macos_Path_Character Encoding_Filesystems - Fatal编程技术网

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

OSX文件名中的特殊字符?(Python os.rename),python,macos,path,character-encoding,filesystems,Python,Macos,Path,Character Encoding,Filesystems,我试图用python脚本在OSX上自动重命名一些文件。但我无法处理特殊字符,如正斜杠等: oldname = "/test" newname = "/test(1\/10)" os.rename(oldname, newname) 我想我确实有编码问题。但是对我来说,使用re.escape或使用UTF-8 unicode编码的不同尝试都没有成功。你能给个提示吗 谢谢! Marco大多数文件系统的共同点是,它们不允许在文件名中使用目录分隔符(斜杠) 这就是说,在Mac OS X中,您可以在fin

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

oldname = "/test"
newname = "/test(1\/10)"
os.rename(oldname, newname)
我想我确实有编码问题。但是对我来说,使用re.escape或使用UTF-8 unicode编码的不同尝试都没有成功。你能给个提示吗

谢谢!
Marco

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


这就是说,在Mac OS X中,您可以在finder中使用斜杠显示文件名,您可以尝试将斜杠替换为

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

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


python会尝试吗?python有那么糟糕吗?它不会按原样传递给syscall并让操作系统失败吗?为了简单起见,我在root中使用了该文件,但我得到了OSError:[Errno 2]没有这样的文件或目录。这就是为什么我更希望有一个可以使用的编码/转义函数。谢谢,用冒号替换正斜杠会得到所需的输出。在Finder中,它会像我使用正斜杠一样直观地呈现。OSX文件名中禁止使用冒号。是否有任何函数可以进行转换(可能包括其他棘手的字符?是的,冒号是被禁止的。对函数一无所知,更不用说python函数了。好吧,一个更好的python功能会很好,但这样就可以了!谢谢!这可能也有关系:这不是真的python的错:OS X中真正的路径分隔符是斜杠。这只是一个查找显示的黑客使
误导性地显示为
/
;在命令行上,您将看到真实的角色。这种奇怪之处大概是为了满足那些过去能够在文件名中使用
/
的老派Mac用户,因为OS X之前的路径分隔符是冒号。是的,它与python完全无关。我几乎什么都不知道关于python,我还没有回答这个问题;-)这个字符串甚至不是你所想的。它实际上是一个带有两个斜杠的文本测试(1\/10)。