为什么要把这篇文章的一部分改成新行?(Python)

2024-10-02 12:23:12 发布

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

我在文本文件中的一行中添加一些新的位,然后将其与文件中的其余行一起写入一个新文件。关于while循环中的第2个if语句,我希望它们都在同一行上:

path = raw_input("Enter the name of the destination folder: ")

source_file = open("parameters")
lnum=1
for line in source_file:
    nums = line.split()
    if (lnum==10):
        mTot = float(nums[0])
    if (lnum==11):
        qinit = float(nums[0])
    if (lnum==12):
        qfinal = float(nums[0])
    if (lnum==13):
        qgrowth = float(nums[0])
    if (lnum==14):
        K = float(nums[0])
    lnum = lnum+1

q = qinit
m1 = mTot/(1+qinit)
m2 = (mTot*qinit)/(1+qinit)
taua = (1/3.7)*(mTot**(-4.0/3.0))
taue = taua/K
i = 1
infname = 'parameters'
while (q <= qfinal):
    outfname = path+'/'+str(i)
    oldfile = open(infname)
    lnum=1
    for line in oldfile:
        if (lnum==17):
            line = "{0:.2e}".format(m1)+' '+line
        if (lnum==18):
            line = "{0:.2e}".format(m2)+' '+line+' '+"{0:.2e}".format(taua)+' '+"      {0:.2e}".format(taue)
        newfile = open(outfname,'a')
        newfile.write(line)
        lnum=lnum+1
    oldfile.close()
    newfile.close()
    i=i+1
    q = q + q*(qgrowth)
    m1 = mTot/(1+q)
    m2 = (mTot*q)/(1+q)

但taua和taue被写在它下面的一行。我错过了什么?你知道吗


Tags: formatiflineopenfloatnumsm1m2
2条回答

如果在更改行之前在line上使用line=rstrip(line),那么它将修剪新行(以及任何空格)。你知道吗

这是因为行仍然包含尾随的换行符,当您连接它时,您也包括了换行符。你知道吗

插入

line = line.strip()

就在if (lnum == 19):之后,但在之前,您将较长的line放在一起,以消除换行符。你知道吗

请注意,write不会自动添加换行符,因此您需要添加自己的尾随换行符。你知道吗

更新

这是未经测试,但我想除非我搞砸了,你可以用这个代替你的长线:

 line = line.strip()
 line = "{0:.2e} {} {0:.2e}   {0:.2e}\n".format(x, line, y, z)

相关问题 更多 >

    热门问题