объединяющая строка в python - PullRequest
0 голосов
/ 03 февраля 2012

Я преобразовываю командную строку в строку Python.Командная строка:

../src/clus -INFILE=../input/tua40.sq -OUTPUT=OUT

Оператор python:

c_dir = '~/prj/clus/'
c_bin = c_dir + 'src/clus'
c_data = c_dir + 'input/tua40.sq'

c = LiveProcess()
c.executable = c_bin
c.cwd = c_dir 
c.cmd = [c.executable] + ['-INFILE=', 'c_data, '-OUTPUT=OUT'] 

Проблема в том, что c.cmd в конце выглядит как

~/prj/clus/src/clus -INFILE= ~/prj/clus/input/tua40.sq ...

Не такпосле '=' есть пробел, который заставляет программу сообщать об ошибке.

Как я могу объединить '=' с путем?

Ответы [ 4 ]

6 голосов
/ 03 февраля 2012

LiveProcess ожидает список аргументов в стиле argv. Если вы хотите сделать один аргумент, вам нужно указать одну строку. Поэтому используйте конкатенацию для создания строки:

c.cmd = [c.executable] + ['-INFILE='+c_data, '-OUTPUT=OUT'] 

Кроме того, нет необходимости в добавлении списка:

c.cmd = [c.executable, '-INFILE='+c_data, '-OUTPUT=OUT'] 
0 голосов
/ 03 февраля 2012

Учитывая, что похоже, что вы объединяете пути, вы должны использовать os.path.join, а не обычную строку concat.

0 голосов
/ 03 февраля 2012

Попробуйте это:

c.cmd = [c.executable] + ['-INFILE='+c_data, '-OUTPUT=OUT']
0 голосов
/ 03 февраля 2012

Почему бы вам просто не объединить строку так:

a = 'A'+'B'

тогда

a == 'AB'

, что в вашем примере

['-INFILE=' + c_data, '-OUTPUT=OUT'] 
...