嗨以下哪一段代码需要或使用的资源更少? 有更好的方法吗?写文件?
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 + "*")
答案 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
方法创建一个字符串,而没有链接添加创建的所有中间字符串。