2016-10-23 3 views
0

ich ein Kommandozeilen-Tool, die ich laufe wie folgt:Schwierigkeit mit Kommandozeilen-Argumente subprocess.check_output in vielen Teilen

/home/user/Dennis --+-+--+-----+--+++-+-+-- --+-++-+---+--+--++-++++- +--+---++++-+++-++-+-++++ --+-----+---+--++++---++- ----+----++++++-++++---+- ----------++-----++------ +--++-+-++++---+++--+++++ +-+-----++-+++-----+++-++ -++++--+-++--++---++-+++- +--++++-++----+---+--++-+ +++----+--++-+++-+--+++++ -++++-+-++++-+++------+++ -++-++-+--++--+---+-+---+ +-+++---+---++--+++--+--+ ++-+-+--++--+-------+-+-- ---++--+-+--+-+++-+++---- -+---+++-------+++-+----- +-+--------++++++--+-++-+ ++++-+++++++++-----+++++- -+++++-+---+-++---++++--- +-+---+++-+---+-++--++--- +-+-++-++++-+---------+-+ +-+++---++-----+-+--+--++ ++++++-+-++--+----++-+-+- ---+--++--------+++--+--- 
-5258461839360 

Mit anderen Worten: es eine lange Reihe von + nimmt und es als Befehl Zeilenargument durch Leerzeichen getrennt. Ich versuche es von Python aus zu nennen. In ipython mache ich:

In [1]: outstr = "--+-+--+-----+--+++-+-+-- --+-++-+---+--+--++-++++- +--+---++++-+++-++-+-++++ --+-----+---+--++++---++- ----+----++++++-++++---+- ----------++-----++------ +--++-+-++++---+++--+++++ +-+-----++-+++-----+++-++ -++++--+-++--++---++-+++- +--++++-++----+---+--++-+ +++----+--++-+++-+--+++++ -++++-+-++++-+++------+++ -++-++-+--++--+---+-+---+ +-+++---+---++--+++--+--+ ++-+-+--++--+-------+-+-- ---++--+-+--+-+++-+++---- -+---+++-------+++-+----- +-+--------++++++--+-++-+ ++++-+++++++++-----+++++- -+++++-+---+-++---++++--- +-+---+++-+---+-++--++--- +-+-++-++++-+---------+-+ +-+++---++-----+-+--+--++ ++++++-+-++--+----++-+-+- ---+--++--------+++--+---" 

In [2]: from subprocess import check_output 

In [3]: check_output(["/home/user/Dennis", outstr]) 
Out[3]: '-1\n' 

Ich denke, es ist die Räume, die das Problem verursachen.

Wie kann ich die gleiche Ausgabe erhalten, die ich von der Befehlszeile würde?

Antwort

2

Split outstr und übergeben Sie die aufgeteilte Zeichenfolge innerhalb der Liste an check_call(). Der einfachste Weg, Änderung für die Herstellung in Ihrem aktuellen Code wird, um es als:

from subprocess import check_call 

outstr = "--+-+--+-----+--+++-+-+-- --+-++-+---+--+--++-++++- +--+---++++-+++-++-+-++++ --+-----+---+--++++---++- ----+----++++++-++++---+- ----------++-----++------ +--++-+-++++---+++--+++++ +-+-----++-+++-----+++-++ -++++--+-++--++---++-+++- +--++++-++----+---+--++-+ +++----+--++-+++-+--+++++ -++++-+-++++-+++------+++ -++-++-+--++--+---+-+---+ +-+++---+---++--+++--+--+ ++-+-+--++--+-------+-+-- ---++--+-+--+-+++-+++---- -+---+++-------+++-+----- +-+--------++++++--+-++-+ ++++-+++++++++-----+++++- -+++++-+---+-++---++++--- +-+---+++-+---+-++--++--- +-+-++-++++-+---------+-+ +-+++---++-----+-+--+--++ ++++++-+-++--+----++-+-+- ---+--++--------+++--+---" 

check_call_args = ["/home/user/Dennis"] + outstr.split(' ') 
check_call(check_call_args) 

wo str.split(' ') Ihre String in Liste der Teil getrennt durch Leerzeichen ' ' aufgeteilt.

Verwandte Themen