Python:根据用户的选择顺序删除文件中的记录

时间:2017-10-12 18:44:46

标签: python python-3.x file-io

为什么我的程序会跳过输出中显示的名称? 我对处理记录并不是非常熟悉,但我可以与他们合作。

我需要添加允许我删除捐赠者及其号码的代码。我询问用户是否要在阅读此人时删除每个人。但是,我的程序没有正确读取字段

这是原始文本文件的样子(“name:”和“number:” 不是文本文件的一部分。我把它放在那里,以更具体地说明记录的格式。)

姓名:迈克
数量:5

姓名:李 数量:0

名称:ramage
编号:2

姓名:詹姆斯 号码:6

姓名:mack
数量:10

更具体的目标: 我希望我的程序读取名称,提示用户删除, 如果是,请不要将名称或号码写入临时文件(我稍后将重命名), 如果不是,请将名称和号码写入临时文件。

这是运行后的输出

你想删除mike(y / n)吗? y
迈克已被删除
你想删除(是/否)? y
 已删除
你想删除0(y / n)吗? y
0已被删除
你想删除ramage(y / n)吗? n
你想删除(是/否)? n
你想删除6(y / n)吗? y
6已被删除
你想删除mack(y / n)吗? n

import os

def main():
    openOriginal = open("donors.txt", "r")
    openNew = open("tempDonor.txt", "w")


    readW = openOriginal.readline()
    while readW != "":

        readW = readW.rstrip("\n")

        readN = openOriginal.readline()


        print(readW)
        print(readN)


        s_ask = input("Would you like to delete " + readW + " (y/n)? ")

        if s_ask != "y":
            openNew.write(readW + "\n")
            openNew.write(readN + "\n")
        else:
            print(readW, "has been deleted")


        readW = openOriginal.readline()

    openOriginal.close()
    openNew.close()

main()

1 个答案:

答案 0 :(得分:0)

您需要考虑空白行。实际上,您的算法一次仅处理2行数据。修改算法以一次处理3行: name: james number: 6 blank line name: mack number: 10 blank line etc..