我想制作一个python脚本,既可以处理输入到命令行的字符串,也可以处理输入文件。
python my_script.py "Hello World"
或文件中的一组字符串(如input_file.txt)
python my_script.py -i input_file.txt
有没有办法通过 argparse
? 到目前为止,我可以处理输入文件,但我不知道如何添加直接处理命令行中输入的字符串的选项。
make argparse 接受一个位置参数(文件名或字符串)和一个标志(-i)。如果存在标志,则将参数视为一个文件。请看一下 argparse教程 以获取更多信息。我已经修改了这个例子,以满足您的需求。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("inp", help="input string or input file")
parser.add_argument("-i", "--treat-as-file", action="store_true",
help="reads from file if specified")
args = parser.parse_args()
if args.treat_as_file:
print("Treating {} as input file".format(args.inp))
else:
print("Treating {} as the input".format(args.inp))
输出。
/tmp $ python test.py abcde
Treating abcde as the input
/tmp $ python test.py -i abcde
Treating abcde as input file
要处理一个命令行字符串,你可以使用 sys.argv
,它是所有输入到命令行的参数的列表。
main.py。
import sys
print(sys.argv)
在CLI中运行以下一行
>> python main.py foo bar "hello world"
会输出。
['main.py', 'foo', 'bar', 'hello world']