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

时间:2015-08-09 13:40:30

标签: python python-3.x

嗨以下哪一段代码需要或使用的资源更少? 有更好的方法吗?写文件?

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

OR

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

4 个答案:

答案 0 :(得分:2)

第一种方法有点不对,当你遍历文件时(即使使用枚举)它已经读取了行,你在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 + "*")

答案 1 :(得分:2)

我用这个:

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

答案 2 :(得分:2)

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

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

print()函数自动插入空格和行尾的换行符。

答案 3 :(得分:1)

如果您只想在文件末尾添加一行,则最有效的是

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

以附加模式打开文件会自动启动文件末尾的文件点,而无需显式读取文件以启动。 format方法创建一个字符串,而没有链接添加创建的所有中间字符串。