繁体   English   中英

python在txt_file中的现有行之间添加文本

[英]python adding text between existed lines in txt_file

我正在尝试制作一个简单的日记程序进行练习。 想在我写日记时添加行。 日记将在行“完成”或“完成”之前保持输入

contents[0] Diary_file

contents[1] 'empty'

contents[2] 'Start line'

contents[3] '----------------------------'

contents[4] Diary No.1 **<- first diary starts from here**

contents[5] "I had a good day
...

===============================

(for counting logic)

diary counts                    
0

def writing():
content = (raw_input("> "))
return content

def put_between(word):
    with open("D_diary.txt", 'r') as read_file: # before start, get last diary
        contents = read_file.readlines()        # get contents in list
        for i in contents:
            if i == 'finish' or i == 'Finish':  #get the last diary finish line
                finish_line = i                 #to get next starting point
            else:
                finish_line = 2                 #for starting the first diary
        count = contents[-1]                    #getting the diary count number
        print count                             #for creating 'Diary No.%d' %count

    **contents.insert(finish_line+2, word)        #THIS IS THE ACTUAL PROBLEM  
    in_contents = []                            #TRYING TO START WRITING FROM
    with open("D_diary", "w") as write_file:    #
        for i in contents:
            in_contents += '\n'.join(contents) #ERROR PART
            write_file.write(in_contents)**

def writing_logic():
    one_weather = raw_input("Weather : ")                          
    print "Write your Day! -Type 'finish' or 'Finish' to stop\n"  
    while True:
        word = writing()                        #func (just raw_input)
        if word == 'finish' or word == 'Finish':
            break                                   #finish getting text
        else:
            put_between(word)                       #goes up to func

错误:

* TypeError:序列项目4:预期的字符串,NoneType找到

看来您的writing()方法返回None

您也可以将代码发布到该方法吗?

put_between函数中,您将finish_line设置为i ,然后再执行finish_line+2 但是i变量用于finish_line = ifor i in contents ,这意味着它有时是( finish_line = i )一行文本,有时是( finish_line = 2 )一个整数。

您可能应该使用.index()方法来搜索单词finish ,因为您的代码表明它是该行上唯一的单词:

for text in ('Finish', 'finish'):
    try:
        finish_line = contents.index(text)
        break
    except ValueError:
        pass
else:
    finish_line = 2

您正在从文本中提取count ,但未将其转换为整数。 您将需要使用count = int(...)来获取整数,以便稍后可以使用count += 1进行递增。

您可能可以通过在换行符上加入来获取输出:

outfile.write('\n'.join(contents))

要么

print('\n'.join(contents), file=outfile)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM