当前位置: 首页 > 面试题库 >

如何在预定义的参数字符串中使用python的argparse?

柴亦
2023-03-14
问题内容

我想使用pythons argparse模块来解析我的cli参数字符串。这适用于从终端传递的参数,但不适用于给定的字符串。

import argparse

parser = argparse.ArgumentParser(description='Argparse Test script')
parser.add_argument("param", help='some parameter')

argString = 'someTestFile'
print(argString)

args = parser.parse_args(argString)

如果运行此脚本,则会得到以下输出:

~/someTestFile
usage: argparsetest.py [-h] param
argparsetest.py: error: unrecognized arguments: o m e T e s t F i l e

~/someTestFile以某种方式在转变o m e T e s t F i l e。如前所述,如果我从终端传递文件名,它就可以工作。

我可以想象,这与字符串编码有关。有人知道如何解决此问题吗?


问题答案:

parser.parse_args()要求序列与相同的形式sys.argv[1:]。如果将字符串像sys.argv序列一样对待,则会得到['s', 'o', 'm', 'e', 'T', 'e', 's', 't', 'F', 'i', 'l', 'e']。’s’成为相关参数,然后字符串的其余部分不可解析。

相反,您可能想传递 parser.parse_args(['someTestFile'])



 类似资料:
  • 问题内容: 这是我的代码: 但显示错误: 那我该怎么办, 谢谢 问题答案: 带有字符串参数的参数仅用于表达式。如果要执行语句,请使用: 但是在执行此操作之前,请考虑是否真的需要动态代码。到目前为止,大多数事情都可以做到。

  • 问题内容: 我想使用一些特殊字符来修剪SQL Server字符串,例如“ ،,。?!؛ ,،,> <= + ـ”。 SQL Server ltrim和rtrim函数仅去除空格字符。 有没有人想实现SpecialTrim功能? 问题答案: 下面对模式进行了硬编码。 它寻找 不是 要在两端排除的字符之一的第一个字符。 要使其动态化,您可以使用字符串串联来构建字符集(注意模式语法中包含特殊含义的字符)

  • 我有下面的代码,它抛出了下面给出的错误。当'string[]args'被替换为'java.lang.string[]args'时,它不会抛出错误并运行方法s1.method1()。 错误:在diff.test类中找不到Main方法,请将Main方法定义为:public static void Main(string[]args)或JavaFX应用程序类必须扩展JavaFX.application.

  • 问题内容: 我想知道下面是否有更通用的方法?我想知道是否有一种方法可以创建st函数,以便我可以搜索未预定义数量的字符串? 因此,例如,能够创建通用的st函数,然后键入st(’Governor’,’Virginia’,’Google) 这是我当前的功能,但是它预定义了您可以使用的两个词。(df是pandas DataFrame) 问题答案: 您可以使用: 版画 将在允许接受的位置参数的数量不受限制。

  • 问题内容: 我知道如何用以下方法覆盖字符串类: 但是,如何在str不隐式定义类的情况下使用此类而不是内置UserString类?明确地说,我想要这样: 问题答案: 这不可能。您尚未覆盖字符串类。 您不能覆盖类。您可以覆盖方法。您所做的是定义一个类,并且仅覆盖其str()方法。 但是你可以做这样的事情… 输出: 覆盖过去!

  • 问题内容: 我需要定义一个数组,其中包含所有以下特殊字符。 我正在用这个 它接受除“和\以外的所有字符 请帮助如何定义这两个。 问题答案: 并且是String类中的特殊字符 是String的开始或结尾 用于创建如新线的某些字符 标签或你的情况逃脱特殊字符,如和 因此,要使它们成为文字,您必须使用和 另一个想法是使用而不是,这样您就不必转义,并且您的字符可以写为或(因为要求转义- 应该写为- 在这里