【问题标题】:Parse Windows command line via Python on Linux在 Linux 上通过 Python 解析 Windows 命令行
【发布时间】:2022-03-05 02:37:38
【问题描述】:

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

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

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

我尝试使用 python 的 argparse,但不知道如何正确配置它(如果可能的话)。

【问题讨论】:

  • 请发布您希望字典的外观。
  • argparse 有什么问题?我认为这是完成这项工作的正确工具。将它与vars 一起使用可以为您提供字典:stackoverflow.com/a/16878364/3901060

标签: python windows parsing ubuntu cmdline-args


【解决方案1】:

一个非常幼稚的实现是:

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}]

假设有更复杂的字符串具有不同的空格和破折号变体,正则表达式可能更适合。

【讨论】:

    【解决方案2】:

    如果您知道该路径是 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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-07
      • 1970-01-01
      • 2011-07-12
      • 2012-07-16
      • 2017-04-23
      • 2012-05-09
      • 1970-01-01
      • 2017-09-13
      相关资源
      最近更新 更多