Python 字符串中的for循环
我正试图用python编写一个脚本,使我的工作更容易。 我需要使用Python 字符串中的for循环,python,string,for-loop,Python,String,For Loop,我正试图用python编写一个脚本,使我的工作更容易。 我需要使用os.system调用外部软件的一些函数 有没有一种方法可以在这个字符串中插入for循环,而不必每次都写入obs\u dir[n] import os obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081'] xid = ['src21'] i=0 os.system("pset combine_spec
os.system
调用外部软件的一些函数
有没有一种方法可以在这个字符串中插入for循环,而不必每次都写入obs\u dir[n]
import os
obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']
i=0
os.system("pset combine_spectra src_arfs=/"
+ obs_dir[0] + "/" + xid[i] + "_" + obs_dir[0] + "_spectrum.arf,"
+ "/" + obs_dir[1] + "/" + xid[i] + "_" + obs_dir[1] + "_spectrum.arf,"
+ "/" + obs_dir[2] + "/" + xid[i] + "_" + obs_dir[2] + "_spectrum.arf,"
+ "/" + obs_dir[3] + "/" + xid[i] + "_" + obs_dir[3] + "_spectrum.arf,"
+ "/" + obs_dir[4] + "/" + xid[i] + "_" + obs_dir[4] + "_spectrum.arf,"
+ "/" + obs_dir[5] + "/" + xid[i] + "_" + obs_dir[5] + "_spectrum.arf,"
+ "/" + obs_dir[6] + "/" + xid[i] + "_" + obs_dir[6] + "_spectrum.arf,"
+ "/" + obs_dir[7] + "/" + xid[i] + "_" + obs_dir[7] + "_spectrum.arf,"
+ "/" + obs_dir[8] + "/" + xid[i] + "_" + obs_dir[8] + "_spectrum.arf,"
+ "/" + obs_dir[9] + "/" + xid[i] + "_" + obs_dir[9] + "_spectrum.arf")
您可以通过首先迭代列表(obs_dir)并形成字符串来创建所需的命令 Ex:
import os
obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']
s = "pset combine_spectra src_arfs="
for i in obs_dir:
s += "/{0}/{1}_{0}_spectrum.arf, ".format(i, xid[0])
s = s.strip().rstrip(',')
print s
#os.system(s)
我想这可能是你想要的
导入操作系统
obs_dir=['18185'、'18186'、'18187'、'19926'、'19987'、'19994'、'19995'、'20045'、'20046'、'20081']
xid=['src21']
str_cmd=“pset combine_spectrum src_arfs=“+obs_dir[0]
分隔符=“”
用于obs_目录中的目录
str_cmd+=分隔符+“/”+dir+“/”+xid[i]+““+dir+”\u spectrum.arf”
分隔符=“,”
os.system(str_cmd)
不在字符串中,但我们可以使用列表理解(在本例中为生成器表达式)和字符串连接等功能构建字符串:
obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081']
xid = ['src21']
i = 0
print("pset combine_spectra src_arfs=" +
",".join("/{0}/{1}_{0}_spectrum.arf".format(n,xid[i])
for n in obs_dir))
您有
xid[i]
,但没有i
,因此使用xid[0]
"/{}/{}_{}_spectrum.arf".format(obs_dir[1],xid[0],obs_dir[1])
给予
'/18186/src21_18186_spectrum.arf'
因此,format
有帮助。
另外,join
将有助于将这些字符串连接成逗号分隔的字符串:
",".join(['a', 'b'])
给予
把这些结合在一起,你会得到
s = ",".join(["/{}/{}_{}_spectrum.arf".format(o,xid[0],o) for o in obs_dir])
提供所需的参数
没有备用的,”
然后使用它
os.system("pset combine_spectra src_arfs=" + s)
在此字符串中插入for循环。。。你的意思是围绕字符串的循环我只需要运行一次
os.system(…)
。首先生成字符串,然后使用it@OmarEinea. 谢谢
'/18185/src21_18185_spectrum.arf,/18186/src21_18186_spectrum.arf,/18187/src21_18g187_spectrum.arf,/19926/src21_19926_spectrum.arf,/19987/src21_19987_spectrum.arfg,/19994/src21_19994_spectrum.arf,/19995/src21_19995_spectrum.arf,/20045/src21_20g045_spectrum.arf,/20046/src21_20046_spectrum.arf,/20081/src21_20081_spectrum.arfg'
os.system("pset combine_spectra src_arfs=" + s)