自动关闭在django __init__.py中打开的文件

时间:2015-03-14 17:45:59

标签: python django csv django-views

我正在创建一个简单的Web应用程序来搜索印度pin代码(包含在单个csv文件中' all_india_pin_code.csv')。此文件在我的django应用的__init__.py中打开,如下所示:

cf = open('all_india_pin_code.csv')

并且此文件处理程序在app的views.py方法中使用,如下所示:

cf.seek(0)
re = csv.reader(cf)
# more code here

现在,当使用Ctrl + C终止django开发服务器(尚未在生产环境中使用我的应用程序)时,此文件是否会自动关闭?如果没有,做正确的方法是什么?请指教。

2 个答案:

答案 0 :(得分:1)

使用Ctrl+C终止Django开发服务器时,这将终止关联的Python进程,从而关闭所有打开的文件。

要检查此行为,您可以进行以下测试:

  1. 启动Python解释器并打开文件:

    open('all_india_pin_code.csv')

  2. 在shell中,检查文件是否由Python进程打开:

    $ lsof | grep all_india_pin_code.csv

    这将返回如下结果:

    python 26395 user 3r REG 254,2 0 12217876 all_india_pin_code.csv

  3. 然后杀死Python解释器。例如:

    $ kill -9 26395

  4. 再次检查文件是否已打开。此命令将不返回任何结果,因为文件已关闭:

    $ lsof | grep all_india_pin_code.csv

答案 1 :(得分:0)

无法评论,因为我的声誉不到 50。 我想用这种方式添加打开文件。

x = open('all_india_pin_code.csv')

并检查您的文件是否仍然打开。 只需运行 x.closed 它会返回 False 如果它仍然打开。 然后运行 ​​x.close() 关闭它。简单