我有两个正在使用的项目文件,我们称之为file.py
,process.py
。 process.py
内部有值,当我想要将值保存到文件中时,(process
导入file.py
)我从file.py
调用一个函数,让我想象一下它
file.py
Open file
Define file operation functions
Close file
注意:请注意,我需要明确打开和关闭文件的原因是因为我不进行原始文件操作,我使用sqlite
。
process.py
import file
a = data
call file.function(a)
问题是,导入完成后文件已关闭。(因为所有源代码都运行,也是close
代码。)所以我无法运行来自{{1}的任何文件读/写函数}。
我不想在process.py
中定义的每个读/写函数中打开和关闭文件。
我可以关闭file.py
中的文件,而不是process.py
,以关闭它
在正确的时间,但这感觉不合适,因为我觉得
就像我必须在file.py
处理它一样,因为file.py
本身
与文件无关。
你建议我做什么?
答案 0 :(得分:0)
您可以在file.py中创建一个上下文管理器,它在开头打开文件并在结尾处关闭它。然后process.py成为:
import file
with file.context_manager():
a = data
call file.function(a)
或者您可以将file.py的所有功能放在一个类中。然后在__init__
中打开该文件,并在__del__
中将其关闭。
答案 1 :(得分:0)
您可以使用atexit模块:
file.py
import atexit
class FileWrapper(object):
_file = None
@staticmethod
def open(filename):
if FileWrapper._file and not FileWrapper._file.closed:
FileWrapper.close()
FileWrapper._file = open(filename)
@staticmethod
def close():
if FileWrapper._file and not FileWrapper._file.closed:
FileWrapper._file.close()
atexit.register(FileWrapper.close)
FileWrapper.open("file")