2017-03-27 30 views
0

我有一個程序,需要一個參數。Intpro字節碼與subprocess.call參數

我需要在我的Python腳本中調用這個程序,我需要傳遞字節碼格式的參數(如\ x42 \ x43)。

直接在bash,我可以這樣做和它的工作:

./myprogram $'\x42\x43'

但隨着subprocess.call它不工作:

subprocess.call(["myprogram", "$'\x42\x43'"])

字節不intrepreted。

我試着用/bin/bash調用我的程序,但是我的程序返回一個段錯誤!

+0

它不起作用?人們很難在不知情的情況下提供幫助。 –

+1

只需將Python字節傳遞給'myprogram':'subprocess.call([「myprogram」,b「\ x42 \ x43」])''。 – acw1668

回答

0

感謝@ acw1668

這非常適用: subprocess.call(["myprogram", b"\x42\x43"])

但是,如果你的字節碼是在一個變量,你需要做的操作:

# If you're string is unicode type 
mystring = mystring.decode('unicode_escape') 
# I choose latin1, because some of my bytecode are bigger than 128 
mystring = mystring.encode('latin1') 

我的字節碼正確解釋: subprocess.call(["myprogram", mystring])

0

一個快速的事情要注意:$是一個bash構造。它是評估變量並返回其值的人。從另一個程序調用一個程序時,通常不會發生這種情況。因此,當您調用myprogram時,您需要提供一個表格中的所有參數,其中myprogram可以理解它們。