我正在向文本文件中的一行添加一些新位,然后将其与文件中的其余行一起写入新文件。参考while循环中的第二个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正在写在其余部分之下的线上。我在这里缺少什么?
答案 0 :(得分:4)
这是因为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)
答案 1 :(得分:0)
如果在更改行之前在行上使用line = rstrip(line),那么它将修剪新行(以及任何空格)。