linux如何批量执行python3程序?

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/bash

PYTHON=`which python3`

for i in {1..100}

do

PYTHON a.py $i >> $i.txt

done

假设你的python脚本是

#!/usr/bin/python

import 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

回到顶部