编辑文本fi中的一行

2024-09-28 23:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一个编辑功能,目前我有代码为用户输入一个身份证号码(行号相同),然后写入到特定的文本文件,但不是取代输入的行,它会清除整个文件,只保存编辑的条目。如何更改代码,使其只更改输入的行,而不删除文件中的所有数据。你知道吗

import time
global idnum

def number():
    global idnum
    print()
    idnum = int(input("Enter the id number of who you want to edit: "))

def edit():
    number()
    num_lines = sum(1 for line in open('Surname'))
    print()
    if idnum> num_lines or idnum ==0 or idnum < 0:
        print("Not valid")
        time.sleep(0.5)
        print("Try again")
        print()
        time.sleep(0.2)
        again()
    else:
        print()
        for file in ["Gender"]:
            with open(file) as f:
                print(f.readlines()[idnum-1], end='')

def editgender():
    with open("Gender",'r') as f:
        get_all=f.readlines()
    with open("Gender",'w') as f:
        for i,line in enumerate(get_all,1):         ## STARTS THE NUMBERING FROM 1 (by default it begins with 0)    
            if i == idnum:             
                Gender = input("Enter new gender: ")
                f.writelines(Gender + "\n")
                print("Edit saved")
                print()

Tags: 文件代码in编辑numberfortimedef
2条回答

您的代码应该编辑成这样(在故障发生时):

if i == idnum:            
    Gender = input("Enter new gender: ")
    get_all=f.readlines()
    get_all[i-1]=Gender+"\n"
    f.write(''.join(get_all))
    print("Edit saved")
    print()

希望这有帮助!:)

尝试用“a”而不是“w”模式打开文件。来自python文档:

mode最常用的值是'r'用于读取,'w'用于写入(如果文件已经存在,则将其截断),以及'a'用于附加(在某些Unix系统上,这意味着所有写入都附加到文件的末尾,而不管当前的查找位置如何)。你知道吗

相关问题 更多 >