我使用显式命名的文件作为临时文件.为了确保我正确删除文件,我必须为open()创建一个包装类.
这似乎有效
A]安全吗?
B]有更好的方法吗?
import os
string1 = """1. text line
2. text line
3. text line
4. text line
5. text line
"""
class tempOpen():
def __init__(self, _stringArg1, _stringArg2):
self.arg1=_stringArg1
self.arg2=_stringArg2
def __enter__(self):
self.f= open(self.arg1, self.arg2)
return self.f
def __exit__(self, exc_type=None, exc_val=None, exc_tb=None):
self.f.close()
os.remove(self.arg1)
if __name__ == '__main__':
with tempOpen('tempfile.txt', 'w+') as fileHandel:
fileHandel.write(string1)
fileHandel.seek(0)
c = fileHandel.readlines()
print c
Run Code Online (Sandbox Code Playgroud)
仅供参考:由于很多原因,我无法使用tempfile.NamedTemporaryFile
我想你可以做一些简单的事情contextlib.contextmanager:
from contextlib import contextmanager
@contextmanager
def tempOpen( path, mode ):
# if this fails there is nothing left to do anyways
file = open(path, mode)
try:
yield file
finally:
file.close()
os.remove(path)
Run Code Online (Sandbox Code Playgroud)
您希望以不同方式处理两种错误:创建文件的错误和写入错误的错误.
| 归档时间: |
|
| 查看次数: |
3436 次 |
| 最近记录: |