我有一个 python 脚本,它根据我应用于其他文件的缩放器编写一个文件,我将此文件称为 APtest.in 。为了方便用户,我不希望用户输入自己的文件名,python 写了文件名。例如,如果所有 mumu、bquark、tau 和 ww 的标量值为 .1,则输出文件名应单独为 DMmodel_010mumu_010tau_010bquark_010ww.in 的行
先感谢您!
from itertools import zip_longest
play=True
while play:
mumu=float(input('Enter the percentage of annihilation for muon e.g 0.5 or .5: '))
bquark=float(input('Enter the percentage of annihilation for bquark e.g 0.5 or .5: '))
tau=float(input('Enter the percentage of annihilation for tau e.g 0.5 or .5: '))
ww=float(input('Enter the percentage of annihilation for W e.g 0.5 or .5: '))
MADHAT_statment=('############################################################\n# MADHAT (Model-Agnostic Dark Halo Analysis Tool)\n# Dark Matter Model File: dmtest\n#\n# mass: DM mass in GeV\n# spectrum: photon energy spectrum integrated from 1 to 100 GeV\n###########################################################\n# mass (GeV) spectrum (1-100 GeV)')
AP= mumu+bquark+tau+ww
if AP>1.0:
Ans=input('Annhilation percentage over 100%\nWould you like to try again?: ')
if AP<1.0:
Ans=input('Annhilation percentage is under 100%\nWould you like to try again?: ')
if AP==1.0:
break
while True:
if Ans =="yes":
play = True
break
elif Ans =="no":
play=False
break
else:
Ans=input('Incorrect option. Type "yes" to try again or "no" to leave')
Mass=[]
Muon=[]
Bquark=[]
Tau=[]
WW=[]
with open ('DMmumu.in') as m:
MUON=m.readlines()
for i in range(8,len(MUON)):
single_line=MUON[i].split('\t')
Massnum=single_line[0]
newMuon=float(single_line[1])*mumu
Mass.append(str(Massnum))
Muon.append(float(newMuon))
with open ('DMtautau.in') as t:
TAU=t.readlines()
for i in range(8,len(TAU)):
single_line=TAU[i].split('\t')
Massnum=single_line[0]
newTau=float(single_line[1])*tau
#Mass.append(str(Massnum))
Tau.append(float(newTau))
with open ('DMbb.in') as b:
BQUARK=b.readlines()
for i in range(8,len(BQUARK)):
single_line=BQUARK[i].split('\t')
#Massnum=single_line[0]
newBquark=float(single_line[1])*bquark
#Mass.append(str(Massnum))
Bquark.append(float(newBquark))
with open ('DMWW.in') as w:
W_W=w.readlines()
for i in range(8,len(W_W)):
single_line=W_W[i].split('\t')
#Massnum=single_line[0]
newWW=float(single_line[1])*ww
#Mass.append(str(Massnum))
WW.append(float(newWW))
Spectrum_1=[x+y+z for x,y,z in zip(Muon,Bquark,Tau)]
NewSpectrum=[w+a for w,a in zip_longest(reversed(Spectrum_1),reversed(WW), fillvalue=0)][::-1]
with open ('APtest.in','w') as outfile:
outfile.writelines(MADHAT_statment)
outfile.writelines('\n')
for i in range(len(NewSpectrum)):
outfile.writelines(Mass[i])
outfile.writelines('\t')
outfile.writelines(str(NewSpectrum[i]))
outfile.writelines('\n')
像下面这样:
file_post = "_%03dmumu_%03dtau_%03dbquark_%03dww.in"%((int)(mumu*100),(int)(tau*100),(int)(bquark*100),(int)(ww*100))
with open ('Dmumu'+file_post) as t:
etc, etc
你会得到一个文件名,如:
Dmumu_010mumu_010tau_010bquark_010ww.in
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句