Как иметь несколько разделителей пути в Bash

У меня есть несколько скриптов Python, которые были написаны кем-то еще в Windows. Эти сценарии используют двойную обратную косую черту в качестве разделителя пути, но при запуске в Ubuntu они не работают из-за этого. Я могу изменить все \ на /, и сценарии будут работать, но есть много сценариев и много усилий, чтобы изменить каждый \ на /

. Поэтому мой вопрос: возможно ли добавить \ в качестве разделителя пути в Ubuntu или только в Bash, чтобы мне не приходилось изменять эти скрипты?

Пример кода:

# Append Common directory to the Python search path
sys.path.append('..\\..\\..' + os.sep + 'Common')
1
задан 28 March 2012 в 16:26

2 ответа

Я не могу ответить на ваш вопрос, но очень легко изменить \ на / во всех сценариях, как это:

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

(Просто попробуйте сначала скопировать ваши файлы!)

0
ответ дан 28 March 2012 в 16:26

В Linux имена файлов могут содержать любые символов, кроме / (так как это разделитель пути) и байт NUL (терминатор строки, \0). Это означает, что \ является допустимым символом в имени файла, а также символами новой строки, вкладками, escape-последовательностями терминала, непечатаемыми символами ... поэтому нет, вы не можете временно использовать \ в качестве разделителя пути.

Windows не так либеральна и имеет больший набор символов, недопустимых в именах файлов, и / является одним из тех символов, которые не допускаются. По этой причине python также рассмотрит / разделитель пути в Windows, поэтому изменение этого \\ на / должно заставить скрипт работать как в Windows, так и в Ubuntu. Тем не менее, правильный способ объединения путей в python - это использование функции os.path.join.

Я рекомендую просмотреть сценарии и вручную исправить весь непереносимый код.

0
ответ дан 28 March 2012 в 16:26

Другие вопросы по тегам:

Похожие вопросы: