2016-01-20 2 views
0

У меня есть скрипт python, обрабатывающий файлы в каталоге в Linux Mint. Часть кода, как в следующем:Как бороться с путями с пробелами в Linux при кодировании в Python 2.7?

path_to_dir = "/home/user/Im a folder with libs to install/" 

if os.path.isdir(path_to_dir): 
    print "it can locate the directory" 
    os.chdir(path_to_dir) # everything ok here :D 
    subprocess.call(['./configure'], shell = True) 
    subprocess.call(['make'], shell = True) 
    subprocess.call(['make install'], shell = True) # problem happens here 

При выполнении subprocess.call(['make install'], shell = True) он выдает эту ошибку:

/bin/bash: /home/user/Im: No such file or directory 
make[3]: *** [install-libLTLIBRARIES] Error 127 
make[2]: *** [install-am] Error 2 
make[1]: *** [install-recursive] Error 1 
make: *** [install-recursive] Error 1 

Как я могу иметь дело с пробелами в пути при выполнении subprocess.call(['make install'], shell = True)? (Я использую Python 2.7)

Редактировать: Я обнаружил источник ошибок: Makefile из библиотек, которые я использую (скачанный откуда-то в Интернете), не поддерживает пробелы в пути.

Я тестировал ответ, данный здесь с помощью этого кода в терминале, расположенном в пути «/ дом/пользователь/Im папки с LIBS для установки /» и с использованием учетной записи суперпользователя:

./configure 
make 
make install /home/user/Im\ a\ folder\ with\ libs\ to\ install/Makefile 

Это дает меня та же ошибка:

/bin/bash: /home/user/Im: No such file or directory 
[install-libLTLIBRARIES] Error 127 
make[3]: se sale del directorio «/home/user/Im a folder with libs to install/» 
make[2]: *** [install-am] Error 2 
make[2]: se sale del directorio «/home/user/Im a folder with libs to install/» 
make[1]: *** [install-recursive] Error 1 
make[1]: se sale del directorio «/home/user/Im a folder with libs to install/» 
make: *** [install-recursive] Error 1 

он может найти папку, но, кажется, что внутри, она проходит путь к Linux Баш без каких-либо усиков символов.

Я принимать NAFAS в ответ, потому что он помог мне найти источник проблемы.

ответ

0

пропускают пространства с использованием \

например :

Im\ a\ folder\ with\ libs\ to\ install

0

Вы должны быть в состоянии заменить пробелы с их беглых версий. Try:

path_to_dir = path_to_dir.replace(" ", "\\ ") 
Смежные вопросы