2024-03-29 14:48:14 发布
网友
命令行脚本需要在存在之前清除它为使用而创建的临时文件。假设脚本在执行期间也可以被中断。 你应该在脚本中做以下哪一项?在
a:)使用atexit模块
b:)使用os.tempnam公司()以创建临时文件
c:)定义一个函数
d:)以上都不是
使用try/finally来做clean-up。如果需要处理操作系统级中断,请使用signals。在
try
finally
Try/finally示例
Try
try: create_temp_file() finally: delete_temp_file()
信号示例
您可以在此处定义自己的上下文管理器:
import os class create_temp_file(object): def __enter__(self): """Define entry point actions here""" self.filename = os.tempnam() self.file_obj = open(self.filename, 'w') return self.file_obj def __exit__(self, ex_type, ex_value, ex_traceback): """define cleanup actions here""" self.file_obj.close() os.remove(self.filename)
现在使用with语句,这是python做try finally的方式
with
但是os.tempnam不安全,最好使用tempfile模块来做这些事情。在
os.tempnam
RuntimeWarning: tempnam is a potential security risk to your program
如果delete为true(默认值),则文件一关闭即被删除(或当文件对象被垃圾回收时)
delete
您可以用try/finally子句包装所有内容。清理部分位于finally下:
try: # do everything finally: # cleanup logic
中断程序时,会引发SystemExit异常,并执行finally子句。 它允许做更多的事情,而不仅仅是删除临时文件。在
SystemExit
使用
try
/finally
来做clean-up。如果需要处理操作系统级中断,请使用signals。在Try
/finally
示例信号示例
^{pr2}$您可以在此处定义自己的上下文管理器:
现在使用
^{pr2}$with
语句,这是python做try finally的方式但是
^{3}$os.tempnam
不安全,最好使用tempfile模块来做这些事情。在如果
delete
为true(默认值),则文件一关闭即被删除(或当文件对象被垃圾回收时)您可以用
try
/finally
子句包装所有内容。清理部分位于finally
下:中断程序时,会引发
SystemExit
异常,并执行finally
子句。 它允许做更多的事情,而不仅仅是删除临时文件。在相关问题 更多 >
编程相关推荐