我有一个Python脚本,需要四个命令行参数。我不是每次运行脚本时在命令行中输入这些参数的值,而是希望将命令行参数的值存储在文件中,并让Python脚本从该文件中读取这些值作为命令行参数。例如,如果我想要的命令行参数是
0 1 2 3
然后,名为arguments_in_here.txt
的文件的内容将为0 1 2 3
。我想在命令行上进行一些调用,如
$ python myscript.py < arguments_in_here.txt
被解释为
$ python myscript.py 0 1 2 3
我已经知道仅仅使用<
并不起作用,因为我试过了。
我可以通过以下方式使用xargs
$ cat arguments_in_here.txt | xargs python myscript.py
并且达到了预期的效果,但是在Pythonic精神中,我想知道是否有更直接和简洁的方法来实现我想要的,而不必使用重定向。
注意:我可以修改我的Python脚本,将文件名作为命令行参数,在那里存储我想要的命令行参数值,然后让我的脚本从文件中提取值在命令行上给它,但我想知道Python脚本是否有办法通过命令行从文件中读取命令行参数。
另请注意:如果它最终相关,我使用Python 2.7和tcsh
答案 0 :(得分:2)
$ python myscript.py `cat arguments_in_here.txt`
这些是反叛,而不是常规的单引号。
答案 1 :(得分:1)
如果您使用python myscript.py < arguments_here.txt
,则需要阅读stdin
。另外,您可以使用cat
来获取参数。
python myscript.py $(cat arguments_here.txt)
bash中$(cat filename)
的简短格式为$(< filename)
。
答案 2 :(得分:0)
inputs = list(sys.stdin) # Get all of stdin
inputs = inputs[0] # Get only the first line
inputs = inputs.split() # python myscript.py < 0123_arguments.txt => [0, 1, 2, 3]
答案 3 :(得分:0)
我解决这个问题的方法是使用argparse library来解析一个带有文件名的命令。类似的东西:
$ python program filepath
然后,您可以创建一个从文件中读取属性的函数,并使用这些参数执行函数