Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用另一行替换一行?_Python_Crud - Fatal编程技术网

Python 如何用另一行替换一行?

Python 如何用另一行替换一行?,python,crud,Python,Crud,我正在尝试创建一个带有命令行参数的联系人簿应用程序。这是迄今为止为更新特定联系人的新联系人详细信息而编写的代码args.name包含联系人的姓名。并且args.number具有需要更新的新编号 如何更新整行?当我运行它时,它会用一个空字符串替换整个文件,contacts.txt。此功能也有助于删除功能 thefile = open("contacts.txt","w+") lines = thefile.readlines() for line in li

我正在尝试创建一个带有命令行参数的联系人簿应用程序。这是迄今为止为更新特定联系人的新联系人详细信息而编写的代码
args.name
包含联系人的姓名。并且
args.number
具有需要更新的新编号

如何更新整行?当我运行它时,它会用一个空字符串替换整个文件,
contacts.txt
。此功能也有助于删除功能

thefile = open("contacts.txt","w+")
lines = thefile.readlines()
for line in lines:
     if name in line:
           line.replace(line,"Name: "+ args.name + " Number: "+args.number+ "\n")

当您用“w+”python打开文件时,请删除该文件! 首先要编写两个函数:一个写数据,另一个读数据

def reader():
    f = open("MYFILE.txt", "r")
    lines = f.readlines()
    f.close()
    return lines

def writer(data):
    f = open("MYFILE.txt", "w")
    for i in data:
        f.write(i)
    f.close()
然后,您可以按照自己的意愿实现以下内容:

lines = reader()

for i in range(len(lines)):
    if lines[i] == "Something\n":
        lines[i] = "New_Value\n"
writer(lines)

您可以首先从文件中读取数据,创建一个空字符串,有条件地将每一行附加到新创建的字符串,然后将新获得的字符串写入(替换)现有文件

f1 = open('contacts.txt','r')

data = f1.readlines()
f1.close()
new_data = ""

for line in data:
   if name in line:
     update = line.replace(line,"Name: "+ args.name + " Number: "+args.number+ "\n")
     new_data += update
   else:
     new_data += line

f2 = open('contacts.txt','w')
f2.write(new_data)
f2.close()

您应该将所有文件内容加载到内存并用修补内容重写文件,或者将修补内容写入临时文件并替换原始文件。你只是把它加载到内存中,但没有写操作。我不清楚。你能提供一些代码吗?