我需要一个编辑功能,目前我有代码让用户输入一个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()
答案 0 :(得分:1)
您的代码应该编辑为这样(在发生故障时):
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()
希望这有帮助! :)
答案 1 :(得分:1)
尝试使用&#39; a&#39;打开文件而不是&#39; w&#39;模式。从python文档:
最常用的模式值是&#39; r&#39;阅读,&#39; w&#39;用于写入(截断文件,如果它已经存在),以及&#39; a&#39; for appending(在某些Unix系统上意味着所有写入都附加到文件的末尾,而不管当前的搜索位置如何)。