[英]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 = i
中for 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.