Please help for Python programming
bruno modulix
onurb at xiludom.gro
Mon Mar 21 11:34:25 EST 2005
yy0127 at gmail.com wrote:
> I don't know why i entered the below code
And we don't know either !-)
> and it will miss some
> records.
> Anyone can help me???
If you hope to get some useful help, it would be a good idea to follow
Diez's advice (see other post in this thread)
> users = {}
> users1 = {}
>
> while 1:
Unless there is a break somewhere in the following code (I can't find
one...), this is an endless loop. But you know this, don't you ?
> user, serviceType, msgType, inOut, date, time, numBytes =
> aLog.GetNextMessage("")
> fullmsg = serviceType + "|" + msgType + "|" + inOut
tip : use string formating instead (string concatenations are to be
avoided in Python), ie:
fullmsg = "%s | %s | %s" % (serviceType, msgType, inOut)
> bytemsg = user + " " + serviceType + " " + msgType + " " + inOut + " "
> + numBytes
idem
> user1 = user
>
> msgDict = {}
> byteDict = {}
This re-initialises both dicts on each iteration. Is this really what
you want ?
>
> print bytemsg # 53 records in source file
Here you have an obvious indentation problem. This code *cannot* run.
Take care of not mixing tabs and spaces (tip: configure you editor to
only use spaces)
> msgDict = users[user] # get the cum statistics for this user
Given the above binding of 'users' as an empty dict, this should raise a
KeyError. It's also overwriting the previous binding of msgDict.
> byteDict = users1[user1]
idem. Also, you don't need to bind 2 different names to the same value
to use this value as key in 2 different dicts. Here you could as well
use user for both dicts, since user and user1 are bound to the same value.
> print bytemsg # 50 records in source file
>
In addition to Diez's reading advice, here are some that are more
specific to code-related questions:
1/ paste code, dont re-type it
... this avoid stupid typos
2/ post running code
... if the code is so obviously broked that it cannot even compile|run,
readers will have to fix it first - which they'll probably won't do.
Even if they do, they may not fix it the right way. Everyone's losing
its time...
3/ post the smallest possible bit of code that exhibit your problem
... no one's going to [read 3000 lines of code | install 30 gigabytes of
third part libs | etc...] just to help you. Moreover, quite often, one
finds the bug while reducing the problematic code to it's smallest possible.
And one last: don't forget to put your bullet-proof jacket on before
reading the answers !-) (well, c.l.py is probably one of the friendliest
groups on usenet, but still, this is usenet).
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for
p in 'onurb at xiludom.gro'.split('@')])"
More information about the Python-list
mailing list