[Tutor] Need help appending data to a logfile
Peter Otten
__peter__ at web.de
Mon Jun 17 20:30:20 CEST 2013
Matt D wrote:
> Hey,
> I wrote some simple code to write data to a logfile and it works pretty
> well (thanks guys). Now my problem is that every time i run the program
> the old logfile.txt is overwritten.
The help() function in the interactive interpreter is a good tool hunt for
help on features of functions and classes. For example:
>>> help(open)
Help on built-in function open in module __builtin__:
open(...)
open(name[, mode[, buffering]]) -> file object
Open a file using the file() type, returns a file object. This is the
preferred way to open a file. See file.__doc__ for further information.
>>> help(file)
Help on class file in module __builtin__:
class file(object)
| file(name[, mode[, buffering]]) -> file object
|
| Open a file. The mode can be 'r', 'w' or 'a' for reading (default),
| writing or appending. The file will be created if it doesn't exist
[...]
> I need to be able to stop and start
> the program without overwriting, or losing, the old data. here is the
> relavent code:
>
> # central part of the program
> # lays out the GUI panel
> # omitted lots for our purposes here
> Class panel(wx.Panel):
>
> # open a file named "logfile.txt" in "w" writing mode.
> # this will create the file if it doesn't exist.
> self.logfile = open('logfile.txt', 'w')
>
> # Updates the TextCtrl field values
> # and logs TextCtrl field values
> def update(self, field_values):
>
> #logger code---------------
> #first write the CURRENT date/time
> self.logfile.write('%s,'%(str(strftime("%Y-%m-%d %H:%M:%S",
> gmtime()))))
> # loop through each of the TextCtrl objects
> for k,v in self.fields.items():
> #get the value of the current TextCtrl field
> f = field_values.get(k, None)
> if f:
> #output the value with trailing comma
> self.logfile.write('%s,'%(str(f)))
> self.logfile.write('\n')
> #end logger code ----------------
>
> In addition to not deleting the old data, it would be awesome to have
> some sort of wxPython widget that would give the user the ability to
> 'save as', or name and save the file, from the GUI panel.
This last request is a bit vague, and I'm not a wxPython user myself -- but
the wx.FileSelector() function seems like a good start.
Unfortunately the documentation I found is for the underlying C++ library:
<http://docs.wxwidgets.org/stable/wx_dialogfunctions.html#wxfileselector>
May layman's translation into wxPython:
>>> import wx
>>> app = wx.App()
>>> wx.FileSelector("Save logfile as", flags=wx.FD_SAVE)
[snip spurious warnings]
u'/foo/bar.baz' # use that result for the actual saving.
More information about the Tutor
mailing list