LINUX.ORG.RU

Как заэкранировать пробел

 


0

2

При запуске стороннего процесса проблемы с аргументом «cwd»

proc = subprocess.Popen(["bash "+'"'+full_dir+'"'+"/SOLVER_BASH"], cwd = r'/home/kalina/Рабочий стол/Тестовый_пример', shell = True, stdout=file, stderr=file)

Вот такая ошибка:

fileName::stripInvalid() called for invalid fileName /home/kalina/Рабочийстол/Тестовый_пример

Объединяет «Рабочийстол» и все.

а так

proc = subprocess.Popen(["bash "+'"'+full_dir+'"'+"/SOLVER_BASH"], cwd = r'/home/kalina/Рабочий\ стол/Тестовый_пример', shell = True, stdout=file, stderr=file)

gssomi ★★
()

Обратный слеш не проканает? (после слова Рабочий)

garik_keghen ★★★★★
()
Ответ на: комментарий от gssomi

В том то и дело, что нет. кучу вариантов пробовал. а он зараза убирает пробел и получается «Рабочийстол»

cdi1989
() автор топика
Ответ на: комментарий от gssomi

На данный момент похоже это единственный вариант, потому что если составных имен нет, то все работает.

cdi1989
() автор топика
Ответ на: комментарий от cdi1989

Может не уместно, но все же советую использовать английский вариант наименовании директории, так не будет подобных трабл.

gssomi ★★
()

Два обратных слеша попробуй. Один обрабатывается непосредственно питоном, и дальше идёт уже без него, поэтому команда получает с неэкранированным пробелом. Если ты экранируешь обратный слеш, программа получит обратный слеш и сочтёт пробел экранированным.

Psych218 ★★★★★
()

У меня всё работает и на Python 2, и на Python 3.

Что у тебя выдаёт команда locale и какая кодировка файла .py?

proud_anon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.