通过Linux上的Python解析Windows命令行



我有一堆Windows命令行字符串:

"C:testmy dirmyapp.exe" -somearg=1 -anotherarg="teststr" -thirdarg

我的Python脚本在Ubuntu上工作,需要解析该字符串。我需要以dict的形式获取可执行文件的路径和所有参数。最简单的方法是什么?

我尝试使用python的argparse,但无法弄清楚如何正确配置它(如果可能的话)。

非常天真的实现将是:

STRINGS = [
    '"C:testmy dirmyapp.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}]

假设存在更复杂的字符串,空间和破折号的变化不同,则正则表达式可能会更好。

如果您知道路径是Windows路径,请使用PureWindowsPath优雅地处理Unix上的Windows路径:

from pathlib import PureWindowsPath
string = 'C:testmydirmyapp.exe somearg'
fn = string.strip().split(" ")[0]
path = PureWindowsPath(fn)
path
> PureWindowsPath('C:test/mydir/myapp.exe')

相关内容

  • 没有找到相关文章

最新更新