抱歉,我是python的新手,我只有Shell脚本/ sh的基础知识。我有两个问题。 1)如何从bash获取循环的变量以在python脚本中检索? 2)如何将多个文件中的最大键值保存到同一个字典中?
以上问题是相关的。 说明: 主脚本在Shell脚本中,它们将循环一些Shell命令,然后为许多 K 运行Python脚本。
例如:
#!/bin/sh
for a in K*
do
echo $a
# Loop to call the file.
for i in 1 2 3 4 5
do
# Cut the row and column
grep -v '^#' $a/result*.txt | tr -s ' ' | cut -d ' ' -f 6 | cat > pos.txt
done
chmod a+wx pie1.py
./pie1.py $a/pos.txt $a/neg.txt
chmod a+wx max.py
./max.py $a/output1.py
所以在max.py中我创建了一个字典,它将保存密钥和最大值。
#!/usr/bin/env python
#import pickle
from output1 import *
import subprocess
dicoMax = {}
# The Flist read from output1 that save all the Fscore for one File
dicoMax['K*']=max(Flist)
print(dicoMax)
我想从Shell脚本中检索 K *或变量作为max.py(python脚本)中字典的键,最后保存K *中的所有键值和最大值一本字典。
Tq的。
答案 0 :(得分:0)
有两种方法 - 您可以将其作为命令行参数传递(这是最好的方法),或者您可以将其插入到环境变量中(这不太清楚)
阅读此dive into python tutorial将是一个良好的开端。
答案 1 :(得分:0)
对于问题1和2:
#!/bin/sh
chmod a+wx pie1.py
for a in K*
do
echo $a
# Loop to call the file.
for i in 1 2 3 4 5
do
# Cut the row and column
grep -v '^#' $a/result*.txt | tr -s ' ' | cut -d ' ' -f 6 | cat > pos.txt
done
./pie1.py $a/pos.txt $a/neg.txt
### passing the arguments or value through "$a"
./max.py "$a" $a/output1.py
done
所以在python中
#!/usr/bin/env python
from output1 import *
from maxList import *
import sys
dicoMax = {}
var = sys.argv[1] ###important
print var
### Flist is the list of the Fscore that save in the output1
### var is the key passing by Shell script
dicoMax[var]=max(Flist)
print(dicoMax)
### mList is the dictionary that save in the maxList file (mList must
### be declared first)
### it will update new key:value pair for new loop of Shell script
dicoMax.update(mList)
### Save the updated mList in maxList
a=open('maxList.py', 'w')
a.write("mList=%s\n" % dicoMax)
a.close()