我有一堆这样的 Windows 命令行字符串:
"C:\test\my dir\myapp.exe" -somearg=1 -anotherarg="teststr" -thirdarg
我的 python 脚本在 Ubuntu 上工作,需要解析这些字符串。我需要以dict的形式获取可执行文件的路径和所有参数。最简单的方法是什么?
我尝试使用 python 的 argparse,但无法弄清楚如何正确配置它(如果可能的话)。
我有一堆这样的 Windows 命令行字符串:
"C:\test\my dir\myapp.exe" -somearg=1 -anotherarg="teststr" -thirdarg
我的 python 脚本在 Ubuntu 上工作,需要解析这些字符串。我需要以dict的形式获取可执行文件的路径和所有参数。最简单的方法是什么?
我尝试使用 python 的 argparse,但无法弄清楚如何正确配置它(如果可能的话)。
一个非常幼稚的实现是:
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}]
假设有更复杂的字符串具有不同的空格和破折号变化,正则表达式可能更适合。
如果您知道该路径是 Windows 路径,请使用PureWindowsPath
Unix 上优雅地处理 Windows 路径:
from pathlib import PureWindowsPath
string = 'C:\test\mydir\myapp.exe somearg'
fn = string.strip().split(" ")[0]
path = PureWindowsPath(fn)
path
> PureWindowsPath('C:\test/mydir/myapp.exe')