字符串中的for循环

2024-04-29 16:30:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用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")

Tags: 函数字符串import脚本for软件osdir
3条回答

您可以通过首先迭代列表(obs_dir)并形成字符串来创建所需的命令。在

例如:

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)

我想这可能是你想要的

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)

和13;
和13;

xid[i],但没有{},所以使用xid[0]

"/{}/{}_{}_spectrum.arf".format(obs_dir[1],xid[0],obs_dir[1])

给予

^{pr2}$

所以,format有帮助。 另外,join将有助于将这些连接成逗号分隔的字符串:

",".join(['a', 'b'])

给予

'a,b'

把这个连在一起

s = ",".join(["/{}/{}_{}_spectrum.arf".format(o,xid[0],o) for o in obs_dir])

提供所需参数

'/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)

相关问题 更多 >