[英]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.