linux如何批量执行python3程序?
我有一个python写的程序,这个程序是循环打印多行字符的程序,比如这个程序文件名为a.py
正常我在控制台命令行执行:python3 a.py 参数 >> 1.txt
则会把该程序打印的所有内容存入1.txt文件中,文件的内容会根据参数的不同而不同
我写了一个shell文件,如下
python3 a.py 1 >> 1.txt
python3 a.py 2 >> 2.txt
python3 a.py 3 >> 3.txt
。。。
python3 a.py 100 >> 100.txt
当我执行这个shell文件后并不像想像的一样生成100个文件,并且文件内容几乎都为空,只有很少几个文件有内容(内容还不全)
我想知道这样的linux shell脚本怎么写,才能像手动执行100次(也就是把shell文件中每一行都手动执行)一样的效果呢?
回答:
循环不需要手写啊
loop.sh
#!/bin/bashPYTHON=`which python3`
for i in {1..100}
do
PYTHON a.py $i >> $i.txt
done
假设你的python脚本是
#!/usr/bin/pythonimport sys
print 'Argument List:', str(sys.argv)
执行
$ ./loop.sh$ ls
1.txt 15.txt 21.txt 28.txt 34.txt 40.txt 47.txt 53.txt 6.txt 66.txt 72.txt
...
$ cat *.txt
Argument List: ['a.py', '1']
Argument List: ['a.py', '10']
Argument List: ['a.py', '100']
Argument List: ['a.py', '11']
Argument List: ['a.py', '12']
Argument List: ['a.py', '13']
Argument List: ['a.py', '14']
Argument List: ['a.py', '15']
Argument List: ['a.py', '16']
Argument List: ['a.py', '17']
Argument List: ['a.py', '18']
Argument List: ['a.py', '19']
Argument List: ['a.py', '2']
...
回答:
应该是可行的,可能是其他问题,说明下你的具体操作步骤,甚至可以把代码贴出来。
回答:
@Yujiaao 说的是批量执行的正确解法之一
对于你的问题,还有空格以及 >
和 >>
的影响
你的参数和>之间一定要有空格,否则数字参数会被bash作为重定向处理
>>
是追加写,原文件内容会保留>
是覆盖写,原文件内容会丢弃
你的脚本每次批量执行的结果我推测是只有最近一次的有用,所以你的命令里应该使用>而不是>>
回答:
for i in {1..100};do echo $i; done | xargs -I {} sh -c "python3 a.py {} > {}.txt"
以上是 linux如何批量执行python3程序? 的全部内容, 来源链接: utcz.com/p/937637.html