Python bash中每个命令行的文本文件
好的,我有一个pythonscript,它接受这样一个论点Python bash中每个命令行的文本文件,python,arrays,bash,text,Python,Arrays,Bash,Text,好的,我有一个pythonscript,它接受这样一个论点 & ./myscript.py argumentishere 你要做的是读取一个包含多行文本的文本文件,并对每行执行我的命令,如下所示 & ./myscript.py line1 & ./myscript.py line2 & ./myscript.py line3 ect.ect.ect 如何在bash脚本中实现这一点虽然可以通过bash脚本实现,但更简单的方法可能是使用xargs实用程序 xarg
& ./myscript.py argumentishere
你要做的是读取一个包含多行文本的文本文件,并对每行执行我的命令,如下所示
& ./myscript.py line1
& ./myscript.py line2
& ./myscript.py line3
ect.ect.ect
如何在bash脚本中实现这一点虽然可以通过bash脚本实现,但更简单的方法可能是使用
xargs
实用程序
xargs -L 1 ./myscript.py <inputfile
xargs-L 1./myscript.py您尝试过这个吗
while IFS= read -r line; do
./myscript.py "$line"
done < file
而IFS=read-r行;做
./myscript.py“$line”
完成<文件
您还需要添加#/usr/bin/env python
在myscript.py的头部,chmod executable property为myscript.py如果我是你,我会修改python脚本以文件名作为参数,并对每一行执行我想要的操作
import sys
file = open(sys.argv[1])
for line in file:
#do your thing here
你的Python脚本是接受多个参数还是希望整行都是一个参数?哦,天哪,这是在bash中逐行解析文件最糟糕的方法之一。(更糟糕的是为
使用)。@gniourf\u gniourf:为什么这种方式如此糟糕?@CharlesBailey,因为它在子shell中执行while
循环,并使用不必要的外部cat
。bash方式为:读取时;做完成
,如其他答案所示。(注意,问题已标记)。@gniourf_gniourf:除非python脚本很简单,输入只有很少几行,否则公平地说,我不会认为这些因素中的任何一个都会产生很大影响。@CharlesBailey这不是产生影响的问题。。。这只是一个知道如何正确地做事的问题,这样每次你做的时候,你都会不假思索地把事情做好。毫无顾忌地做事的问题在于,这个代码片段很快就会变长,在某个点上,while
循环中会定义一些变量,您会看到奇怪的结果(因为这个循环在子shell中)。。。哦,天哪,要是你从一开始就做得好就好了。正如我在你的个人资料中注意到的那样,你喜欢编程,所以你至少应该理解一点我的意思。
#!/bin/bash
cat input | while read line
do
./myscript.py $line
done
import sys
file = open(sys.argv[1])
for line in file:
#do your thing here