This is the text file containing the details我受命创建一个函数,该函数根据输入的名称来更新详细信息文件。因此,该功能应该接收关键字并将其与详细信息进行比较,并提取具有该特定名称的详细信息然后将详细信息放在一个单独的文件中。到目前为止,这是我想出的,但是它没有按预期工作,因此,如果有人可以提供更好的解决方案,将不胜感激。
我的代码:
checkedOut = open('checked_out.txt','w+')
Details = open('Details.txt','r+')
l = []
dum = []
l2 = []
for i in Details:
x = i.split()
l.append(x)
count = 0
for t in l:
for p in t:
print(p)
if p != key:
print("Not in records")
elif p == key:
dum = l[count:count+9]
print(dum)
count+=1
Details
文件,然后使用readlines()
函数将其拆分为几行。然后,您可以遍历行,每当细节长10行时,每次将计数器增加10
(您也可以基于line_num
分隔符更改======
计数)。如果line_num
计数指向等于Name: inputted_name
的行,我们可以将这些行写入checkedOut
文件并将其从详细信息行列表中删除,否则将line_num
递增10
并循环再次。
NB:检出的文件以append
模式打开。
checkedOut
文件并用删除了复制数据的新行覆盖Details
文件。name = "sam" # or use input("Please give a name: ")
checkedOutFileName = 'checked_out.txt'
detailsFileName = 'Details.txt'
# Open checked out file in append mode
checkedOut = open(checkedOutFileName,'a')
# Open details file in read mode
Details = open(detailsFileName,'r')
# Read all lines of Details as a list of lines
DetailsLines = Details.readlines()
# Close the Details file
Details.close()
line_num = 0
end_line = len(DetailsLines)
while line_num < end_line:
line = DetailsLines[line_num]
# Check if line is equal to "Name: " + the given name
if line.strip() == f"Name: {name}":
# write matching details to checkedOut file
checkedOut.writelines(DetailsLines[line_num:line_num+10])
print(*DetailsLines[line_num:line_num+10])
# Remove details from details lines
del DetailsLines[line_num:line_num+10]
# Reduce end_line by 10 lines
end_line -= 10
# Continue without incrementing line count, as we've just removed the lines
continue
line_num += 10
checkedOut.close()
# Overwrite Details file with modified data
Details = open(detailsFileName,'w')
Details.writelines(DetailsLines)
# Add a new line at the end
Details.write("")
Details.close()