Files
Phoenix/wx/py/document.py
Per A. Brodtkorb e4e8bf8317 Fixes issue 1571:
Adding missing close for open.
If the "close()" call is missing after a "open(filename)" call, the filename isn't guaranteed to be closed before the interpreter exits.
This is generally a bad practice as explained here: https://stackoverflow.com/questions/7395542/is-explicitly-closing-files-important

Also replaced "fid=open(filename) fid.close()" statements for files with the safer
"with open(filename) as fid:" blocks. See https://www.python.org/dev/peps/pep-0343/
2020-03-23 17:16:44 +01:00

43 lines
1.2 KiB
Python

"""Document class."""
__author__ = "Patrick K. O'Brien <pobrien@orbtech.com>"
import os
class Document:
"""Document class."""
def __init__(self, filename=None):
"""Create a Document instance."""
self.filename = filename
self.filepath = None
self.filedir = None
self.filebase = None
self.fileext = None
if self.filename:
self.filepath = os.path.realpath(self.filename)
self.filedir, self.filename = os.path.split(self.filepath)
self.filebase, self.fileext = os.path.splitext(self.filename)
def read(self):
"""Return contents of file."""
if self.filepath and os.path.exists(self.filepath):
with open(self.filepath, 'rb') as f:
try:
return f.read().decode('utf-8')
finally:
pass
else:
return ''
def write(self, text):
"""Write text to file."""
with open(self.filepath, 'wb') as f:
try:
# Convert from unicode to bytes
text = text.encode('utf-8')
f.write(text)
except AttributeError:
pass