2017-03-10 3 views
0

Ich habe eine Reihe von Windows-Kommandozeile Strings wie folgt aus:Parse Windows-Kommandozeile über Python auf Linux

"C:\test\my dir\myapp.exe" -somearg=1 -anotherarg="teststr" -thirdarg 

Meine Python-Skripte arbeiten auf Ubuntu und müssen, dass Strings analysieren. Ich muss den Pfad der ausführbaren Datei und alle Argumente in Form von dict bekommen. Was ist der einfachste Weg, das zu tun?

Ich habe versucht, python argarse zu verwenden, kann aber nicht herausfinden, wie man es richtig konfiguriert (wenn es überhaupt möglich ist).

+0

Bitte geben Sie an, wie das Wörterbuch aussehen soll. – nir0s

+0

Was war das Problem mit Argarse? Ich denke, es ist das richtige Werkzeug für diesen Job. Wenn Sie es zusammen mit 'vars' verwenden, erhalten Sie ein Wörterbuch: http://Stackoverflow.com/a/16878364/3901060 – FamousJameous

Antwort

0

Eine sehr naive Umsetzung dieser wäre:

STRINGS = [ 
    '"C:\test\my dir\myapp.exe" -somearg=1 -anotherarg="teststr" -thirdarg' 
] 


def _parse(string): 
    parsed = {} 

    string_parts = string.split(' -') 
    parsed['path'] = string_parts[0] 
    del string_parts[0] 

    for arg in string_parts: 
     kv = arg.split('=') 
     parsed[kv[0]] = None if len(kv) < 2 else kv[1] 
    return parsed 


def main(): 
    parsed_strings = [] 
    for string in STRINGS: 
     parsed_strings.append(_parse(string)) 

    print(parsed_strings) 


main() 

# [{'path': '"C:\test\\my dir\\myapp.exe"', 'somearg': '1', 'anotherarg': '"teststr"', 'thirdarg': None}] 

Unter der Annahme, komplexere Strings mit verschiedenen Variationen von Leerzeichen und Bindestriche sind, können reguläre Ausdrücke besser passen.