在python中写入txt

在python中写入txt,python,text,Python,Text,我正在从另一个文本文件向一个文本文件写入数行。运行时打印的数字看起来不错,但当我打开输出文件时,没有写入任何内容。不知道为什么 min1=open(output1,"w") oh_reader = open(filename, 'r') countmin = 0 while countmin <=300000: for line in oh_reader: #min1 if countmin <=60000:

我正在从另一个文本文件向一个文本文件写入数行。运行时打印的数字看起来不错,但当我打开输出文件时,没有写入任何内容。不知道为什么

min1=open(output1,"w")



oh_reader = open(filename, 'r')

countmin = 0

   while countmin <=300000:
        for line in oh_reader:

       #min1 
        if countmin <=60000:
            hrvalue= int(line)
            ibihr = line
            print(line)
            print(countmin)
            min1.write(ibihr)
            min1.write("\n")
            countmin = countmin + hrvalue


min1.close()
min1=打开(输出1,“w”)
oh_reader=open(文件名'r')
countmin=0

当countmin时,您应该使用Python的
with
语句来打开文件。它为您处理关闭,通常更安全:

with open(filename, 'r') as oh_reader:
如果这是程序缩进的方式

min1=open(output1,"w")



oh_reader = open(filename, 'r')

countmin = 0

   while countmin <=300000:
        for line in oh_reader:
            # this is the same as having pass here
       #min1 
        if countmin <=60000:
            hrvalue= int(line)
            ibihr = line
            print(line)
            print(countmin)
            min1.write(ibihr)
            min1.write("\n")
            countmin = countmin + hrvalue
min1.close()
或者:

min1=open(output1,"w")

oh_reader = open(filename, 'r')

countmin = 0

for line in oh_reader:
    #min1 
    if countmin <=60000:
        hrvalue= int(line)
        ibihr = line
        print(line)
        print(countmin)
        min1.write(ibihr)
        min1.write("\n")
        countmin += hrvalue  # += operator is equal to a = a + b
min1.close()
min1=打开(输出1,“w”)
oh_reader=open(文件名'r')
countmin=0
对于oh_阅读器中的行:
#min1

如果countmin我不是100%确定逻辑,但我认为这就是你想要的:

IN_FNAME  = 'abc.txt'
OUT_FNAME = 'def.txt'

with open(IN_FNAME) as inf, open(OUT_FNAME, 'w') as outf:
    total = 0
    for line in inf:
        val = int(line)
        total += val

        if total <= 60000:
            print('{} -> {}'.format(val, total))
            outf.write('{}\n'.format(val))
        else:
            break
IN_FNAME='abc.txt'
OUT_FNAME='def.txt'
以open(IN_FNAME)作为inf,open(OUT_FNAME,'w')作为OUT:
总数=0
对于inf中的行:
val=int(行)
总计+=val

如果总压痕被破坏。若语句需要右移一步---打印(行)不打印所有文件?我想您需要在oh_reader.readline()中输入行;关于不良缩进的注释对有效。由于
oh_reader
将在第一次通过后使用,因此也不需要外部
while循环
。@unutbu我假设了这么多,但我不确定OP程序的其余部分。我不想改变太多。我将发布一个替代方案。很明显,OP不是python方面的专家,因此不做任何解释就给出这一点并不能帮助他们学到任何东西。
IN_FNAME  = 'abc.txt'
OUT_FNAME = 'def.txt'

with open(IN_FNAME) as inf, open(OUT_FNAME, 'w') as outf:
    total = 0
    for line in inf:
        val = int(line)
        total += val

        if total <= 60000:
            print('{} -> {}'.format(val, total))
            outf.write('{}\n'.format(val))
        else:
            break