如何在 Bash 中使用多个路径分隔符

如何在 Bash 中使用多个路径分隔符

我有一些其他人在 Windows 中编写的 Python 脚本。这些脚本使用双反斜杠作为路径分隔符,但在 Ubuntu 中运行时,它们因此无法工作。我可以将所有 \ 更改为 /,脚本可以工作,但脚本太多,将每个 \ 更改为 / 需要花费很多精力

所以我的问题是:是否可以在 Ubuntu 中或仅在 Bash 中添加 \ 作为路径分隔符,这样我就不必修改这些脚本?

示例代码:

# Append Common directory to the Python search path
sys.path.append('..\\..\\..' + os.sep + 'Common')

答案1

在 Linux 中,文件名可以包含任何字符除外/(因为它是路径分隔符)和 NUL 字节(字符串终止符,\0)。这意味着\是文件名中的有效字符,以及换行符、制表符、终端转义序列、不可打印字符……所以不,您不能暂时用作\路径分隔符。

Windows 不那么宽容,文件名中不允许使用的字符集更多,并且/是不允许使用的字符之一。出于这个原因,python 还会考虑/Windows 上的路径分隔符,因此将其更改\\/应该可以让脚本在 Windows 和 Ubuntu 上都能正常工作。也就是说,在 python 中连接路径的正确方法是使用 os.path.join 函数。

我建议仔细检查脚本并手动修复所有不可移植的代码。

答案2

我无法回答你的问题,但在所有脚本中将 \ 更改为 / 非常容易,如下所示:

find <root_of_scripts> -name "*.py" -exec sed -i 's/\\\\/\//g' {} \;

(请先在文件副本上尝试一下!)

相关内容