使用bash修改python脚本并使用更改执行它
我有一个python脚本,它是一个命令行界面。我从将输出保存在txt文件中的bash脚本执行它:使用bash修改python脚本并使用更改执行它,python,bash,Python,Bash,我有一个python脚本,它是一个命令行界面。我从将输出保存在txt文件中的bash脚本执行它: #!/bin/bash for ... in ... do echo "Foo:$foo" echo "Bar:$bar" ./pythonScript.py --argument1 "arg" # make changes done 我要做的是修改python脚本的一行,并再次执行它,同时更改新行,直到for循环完成 我想更改的python脚本中的代码类
#!/bin/bash
for ... in ...
do
echo "Foo:$foo"
echo "Bar:$bar"
./pythonScript.py --argument1 "arg"
# make changes
done
我要做的是修改python脚本的一行,并再次执行它,同时更改新行,直到for循环完成
我想更改的python脚本中的代码类似于:
QUERY = 'www.foo.com' + '/bar?' \
+ '&title=%(title)s' \
+ '&start=0' \
+ '&num=%(num)s'
每次执行for循环时,查询的start
参数必须增加20个单位。因此,在执行5次之后,start
应该是100
有没有办法做到这一点?您需要的只是一个循环
start = 0
for i in range(5)
QUERY = 'www.foo.com' + '/bar?' +
'&title=%(title)s' +
'&start=' + start +
'&num=%(num)s'
print(QUERY)
start += 20
正如多条评论已经建议的那样,不要这样做。更改Python脚本,使其接受第二个参数。动态修改代码既脆弱又复杂,标准的解决方案是将要更改的内容参数化
QUERY = 'www.foo.com' + '/bar?' \
+ '&title=%(title)s' \
+ '&start=%(start)i' \
+ '&num=%(num)s'
然后像这样运行循环
start=0
for ... in ...
do
echo "Foo:$foo"
echo "Bar:$bar"
./pythonScript.py --argument1 "arg" --start "$start"
((start += 20)) # bash only
done
你为什么不能把它作为python脚本的第二个参数来实现?你为什么不能用python做所有事情?MatsLindh No,这样做完全可以做到way@M.T我在bash中一直在做这件事,现在我不能改变它。你真的应该打那个想出从bash生成Python代码想法的人的屁股:-)你可能有一些项目限制,阻止你现在修复Python代码,但在这种情况下,你可以向负责人指出,这是一种技术债务,在未来往往需要更多的努力才能解决。就像一棵不需要的树,只要它小,你就想把它砍倒。