所以问题是 - 使用哪种情况?我得到了网址列表,并获得了一些神奇的函数get_text_from_url - 我必须将其写入具有给定文件名的文件中 - 就像可以这样,但是这两种情况比另一种更好,为什么?
在这种情况下的优先级是时间和内存 - 不是可读性(对不起,Python)。
当然,欢迎任何其他版本。
第一:
def create_text(filename):
delete_current_text(filename)
urllist = get_urls()
for url in urllist:
with open(filename, "a") as file:
print >>file, get_text_from_url(url)
第二:
def create_text(filename):
urllist = get_urls()
with open(filename, "w") as file:
for url in urllist:
print >>file, get_text_from_url(url)
答案 0 :(得分:2)
你的第二个例子会更好,因为对文件的打开/关闭操作有很大的开销,而后者只做了一次。
但是,如果存储结果(如果get_text_from_url不会返回太大的内容)应该会更好,如下所示:
def create_text(filename):
urllist = get_urls()
result = map(get_text_from_url, urllist)
with open(filename, "w") as file:
file.write("\n".join(result))
因此只有一次写入,并且只在短时间内阻止文件(假设get_text_from_url将执行Web请求,这比本地文件写入花费更长的时间)。
答案 1 :(得分:1)
如果您打开文件,执行写操作,然后在完成后关闭它,I / O会更快。实际上,你在"打开一次,写n"和"打开n,写n"之间进行选择。 (不是"打开n,写一次"如你所说)。使用后一个选项,您每次打开只进行一次写入,但您仍然在进行n次写入。