Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/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_File_File Writing - Fatal编程技术网

Python 打开要写入的文件的最佳方式是什么时候?

Python 打开要写入的文件的最佳方式是什么时候?,python,file,file-writing,Python,File,File Writing,假设我需要处理一些数据,然后将结果写入某个文件 是否最好先打开文件,然后处理数据,然后写入文件 with open('file', 'w') as f: summary = process_data() f.write(summary) 还是在写入之前打开文件更好 summary = process_data() with open('file', 'w') as f: f.write(summary) 我的直觉告诉我,如果process\u data()需要大量内存

假设我需要处理一些数据,然后将结果写入某个文件

是否最好先打开文件,然后处理数据,然后写入文件

with open('file', 'w') as f:
    summary = process_data()
    f.write(summary)
还是在写入之前打开文件更好

summary = process_data()
with open('file', 'w') as f:
    f.write(summary)
我的直觉告诉我,如果
process\u data()
需要大量内存,并且
文件很大,那么第一种方法可能存在一些问题

编辑:

为了从一些回答中澄清,每种方法的优缺点是什么?

定义更好的

我可以想到几个方面:

  • 文件保存所需的时间-如果其他用户需要此文件,最好在-->处理之前尽可能少地将其打开供您使用
  • 干净编码-with
  • 语句比内部的
    打开+关闭过程更整洁
    我的直觉告诉我,如果process_data()需要大量内存,并且文件很大,那么第一种方法可能会有一些问题

    文件的大小应该无关紧要,因为您不阅读它,只打开它进行写入…

    定义更好的

    我可以想到几个方面:

  • 文件保存所需的时间-如果其他用户需要此文件,最好在-->处理之前尽可能少地将其打开供您使用
  • 干净编码-with
  • 语句比内部的
    打开+关闭过程更整洁
    我的直觉告诉我,如果process_data()需要大量内存,并且文件很大,那么第一种方法可能会有一些问题


    文件的大小应该无关紧要,因为您不阅读它,只打开它进行编写…

    Python没有类似c的作用域,只有作用域结构是
    def
    class
    块,因此在第二个示例中
    with
    块结束后,
    摘要
    不会被清除

    我能想到的只有一个区别:以写模式打开文件会将其清除,因此,如果
    处理\u数据
    块的
    中花费很长时间,它会使文件处于空状态更长时间


    如果这不是一个问题,那么这是2+3对3+2。

    Python没有类似c的作用域,只有作用域构造是
    def
    class
    块,因此在第二个示例中,
    summary
    with
    块结束后不会被清除

    我能想到的只有一个区别:以写模式打开文件会将其清除,因此,如果
    处理\u数据
    块的
    中花费很长时间,它会使文件处于空状态更长时间


    如果这不是一个问题,那么这是2+3 vs 3+2。

    为什么不在
    with
    之前创建
    摘要
    ,然后只使用
    with
    块来进行实际写作?因为下面2个答案中有2个出于某种奇怪的原因谈论使用
    with
    语句,介意我重写你的第二个代码段,使用
    with
    吗?@Aran Fey刚刚做了,为什么不在
    with
    之前创建
    摘要
    ,然后只使用
    with
    块进行实际编写?因为下面2个答案中有2个出于某种奇怪的原因谈论使用
    with
    语句,介意我重写你的第二个代码片段,用
    一起使用吗?@Aran Fey刚刚完成了