Provisional fix for writefile() [SF bug # 541730].
The problem was that an exception can occur in the text.get() call or in the write() call, when the text buffer contains non-ASCII characters. This causes the previous contents of the file to be lost. The provisional fix is to call str(self.text.get(...)) *before* opening the file, so that if the exception occurs, we never open the file. Two orthogonal better solutions have to wait for policy decisions: 1. We could try to encode the data as Latin-1 or as UTF-8; but that would require IDLE to grow a notion of file encoding which requires more thought. 2. We could make backups before overwriting a file. This requires more thought because it needs to be fast and cross-platform and configurable.
This commit is contained in:
parent
a258324a3d
commit
f90d529229
|
@ -148,9 +148,9 @@ class IOBinding:
|
|||
|
||||
def writefile(self, filename):
|
||||
self.fixlastline()
|
||||
chars = str(self.text.get("1.0", "end-1c"))
|
||||
try:
|
||||
f = open(filename, "w")
|
||||
chars = self.text.get("1.0", "end-1c")
|
||||
f.write(chars)
|
||||
f.close()
|
||||
## print "saved to", `filename`
|
||||
|
|
Loading…
Reference in New Issue