繁体   English   中英

如何自动化需要 linux 命令行中的两个输入的 python 程序?

[英]How can I automate a python program that requires two inputs in a linux command line?

我有一个 python 程序,我已将其解析为 linux 命令行。 它需要两个输入。 第一个输入将始终相同,我希望第二个输入介于 1-1030 之间。有没有办法让 python 在命令行中自动运行,并且每次将第二个输入增加 +1? 我想这样做,所以我不必手动输入第二个输入 1030 次。

我的命令行看起来像这样:

$ python ex_script.py -d (first input) -r (second input)

从命令行获取输入有多种可能性

  1. 使用import syssys.argv[n]将为您提供第 n 个命令行输入作为字符串。
  2. 使用诸如argparse之类的库

为了避免第二个参数,一个非常简单的解决方法是将一个计数器写入文件并让您的程序读取此文件中的数字,将其增加一覆盖文件。 您还可以在程序中检查该数字是否小于 1030。

我会编写一个简短的第二个脚本,使用所需的 arguments 运行第一个脚本。 不确定这是否是最好的方法,但它是我使用subprocess的首选:

import subprocess

for i in range(1030):
    subprocess.run(['python', 'ex_script', 'arg1', str(i)])

请注意,子进程是用列表 [] 中的值指定的。 这些值在我的 Win10 环境中有效,但您可以根据自己的环境调整它们。

只需在 bash 中使用 for 循环。

for i in {1..1030}
do
    python ex_script.py -d <the first input here> -r $i
done

循环将遍历数字 1 到 1030。然后,您可以将任何命令行指令放入循环中并使用变量$i,将其作为指令的参数传递。

您可以将其放入.sh 文件使用chmod +x使其可执行

然后从终端将其作为可执行脚本运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM