哪种方法需要更少的资源?

2024-03-28 13:41:30 发布

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

嗨,下面哪段代码需要或使用更少的资源? 有更好的方法吗?写在文件里?你知道吗

f=open("Contact.txt","r+")
    for i,j in enumerate(f):
        text=str(f.readline())
        if  text=="":
            f.write('\n'+ name +" "+ family+" " + MPN +" "+ Add + "*")

或者

f=open("Contact.txt","r+")
text=str(f.read())
f.write('\n'+ name +" "+ family+" " + MPN +" "+ Add + "*")

Tags: 文件方法代码textnametxtaddfor
3条回答

第一个方法有点错误,当您在文件上迭代(甚至使用enumerate)时,它已经读取了行并且您在j中得到它,您不需要再次执行f.readline(),这会导致代码跳过备用行(除非您确实想跳过备用行)。你知道吗

而且,这两种方法执行的操作并不相同,第一种方法逐行读取文件,第二种方法完全读取文件,并在最后写一行换行符。你知道吗

假设这是固定的,第一种方法占用的资源更少,因为您不将完整的文件读入内存,而是将每一行读入内存,然后写入另一个文件。你知道吗

我可以建议的另一个改进是使用with语句来正确处理文件的关闭。示例-

with open("Contact.txt","r+") as f:
    for i,text in enumerate(f):
        if  text=="":
            f.write('\n'+ name +" "+ family+" " + MPN +" "+ Add + "*")

如果您想在文件末尾添加联系人:

with open("Contact.txt", "a") as file:
    print(name, family, MPN, Add + "*", file=file)

print()函数自动在行尾插入空格和换行符。你知道吗

我用这个:

f = open("Contact.txt","a")
f.write('\n'+ name +" "+ family+" " + MPN +" "+ Add + "*")

相关问题 更多 >