2012-02-03 58 views
0

我將命令行轉換爲python字符串。該命令行是:在python中連接字符串

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

蟒蛇的說法是:

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 ... 

不是說有一個 '空間' 後「 ='導致程序報告錯誤。

如何將'='連接到路徑?

回答

6

LiveProcess正在等待argv樣式的參數列表。如果你想創建一個參數,你需要提供一個字符串。因此,使用串聯,使字符串:

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

而且,無需對列表添加:

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

你爲什麼不正好連接字符串是這樣的:

a = 'A'+'B' 

然後

a == 'AB'

這是你的榜樣

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

試試這個:

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

你已經過度連接在那裏。 「-OUTPUT」需要啓動一個新的元素。 – 2012-02-03 17:50:52

+0

感謝您的接觸,編輯修復。 – Peter 2012-02-03 17:53:09

0

鑑於它看起來像你串聯路徑,您應該使用os.path.join,不正規字符串連接。