我像下面这样调用一个python:-
python doSomething.py arg1 arg2 {'someKey': 'someValue',"anotherKey":"anotherValue"}
import sys
def main(args):
if len(args) == 0:
print("error")
else:
argument1 = args[0]
argument2 = args[1]
# third is dict
customdict = args[2]
print(customdict["someKey"])
if __name__ == "__main__":
main(sys.argv[1:])
给出如下错误
字符串索引必须是整数,不能是str
我想要得到customdict["someKey"]
避免尝试在命令行上使用Python语法和代码。shell和Python是不同的东西(并且服务于不同的目的)。
相反,使用适当的选项。取决于您的操作系统,例如:
python doSomething.py arg1 arg2 --somekey someValue --anotherKey anotherValue
然后在Python程序中转换字典中的这些选项。
如果您最终使用了许多选项,您可以考虑使用配置文件来代替,使用键值对。一个简单的ini
类型的配置文件已经足够了。
对于两者(命令行参数和配置文件),更倾向于使用Python附带的现有模块。默认模块为argparse
和configParser
。这可能需要一点时间来适应它们,但你的程序会表现得更标准,并且对其他人来说更容易理解。
最后,您看到的错误是因为另一件事:您将customdict
分配给args[2]
,而args[2]
只是一个字符串(字符串可能恰好是"{'someKey': 'someValue', 'anotherKey': 'anotherValue'}"
,或者更可能是"{'someKey':"
,但您不能将其用作字典)。