繁体   English   中英

在文本文件中编辑一行

[英]Editing one line in text file

我需要一个编辑功能,目前我有代码供用户输入一个ID号(与行号相同),然后再写入特定的文本文件,但是它代替了输入的行,而是清除了整个文件并仅保存编辑的条目。 我将如何更改代码,使其仅更改输入的行,而不删除文件中的所有数据。

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()

您的代码应进行编辑,使其看起来像这样(在发生错误的位置):

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系统上,这意味着所有写入均会追加到末尾)不论当前搜索位置如何)。

暂无
暂无

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

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