我正在尝试用python编写一个脚本,以简化我的工作。
我需要使用os.system
来调用外部软件的一些函数。在
有没有办法在这个字符串中插入一个for循环,而不必每次都写obs_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)并形成字符串来创建所需的命令。在
例如:
我想这可能是你想要的
import os obs_dir = ['18185','18186','18187','19926','19987','19994','19995','20045','20046','20081'] xid = ['src21'] str_cmd = "pset combine_spectra src_arfs=" + obs_dir[0] separator = "" for dir in obs_dir str_cmd + = separator + "/" + dir + "/" + xid[i] + "_" + dir + "_spectrum.arf" separator = "," os.system(str_cmd)
;有},所以使用
xid[i]
,但没有{xid[0]
给予
^{pr2}$所以,
format
有帮助。 另外,join
将有助于将这些连接成逗号分隔的字符串:给予
把这个连在一起
提供所需参数
最后没有备用的
','
。在那就用它吧