使python根据用户输入自动命名文件

恩里克92

我有一个 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章