Strange problem when running python code

I

ishtar2020

Hi everybody

I've been writing my very first application in Python and everything is
running smoothly, except for a strange problem that pops up every once
in a while. I'm sure is the kind
of newbie thing every seasoned programmer knows.

Sometimes a receive strange Syntax Errors from parts of code that
worked perfectly minutes ago. What's even more puzzling is that those
errors are pointed to another part of the module when I do some random,
innofensive changes in the code (like inserting a line or deleting some
comments). Sometimes those changes are enough to make the error
dissapear.

Could it be that python has found a real error but is failing to tell
me where it is?
 
B

Brian Beck

For certain errors like Syntax Errors, you'll get a much more helpful
response if you post some actual code. Strip it down if you have to,
but make sure we can reproduce the errors.
 
J

John Salerno

ishtar2020 said:
Hi everybody

I've been writing my very first application in Python and everything is
running smoothly, except for a strange problem that pops up every once
in a while. I'm sure is the kind
of newbie thing every seasoned programmer knows.

Sometimes a receive strange Syntax Errors from parts of code that
worked perfectly minutes ago. What's even more puzzling is that those
errors are pointed to another part of the module when I do some random,
innofensive changes in the code (like inserting a line or deleting some
comments). Sometimes those changes are enough to make the error
dissapear.

Could it be that python has found a real error but is failing to tell
me where it is?

I recently had quite a hassle with an indentation problem, so you might
want to check on your whitespace.
 
F

Fredrik Lundh

ishtar2020 said:
Sometimes a receive strange Syntax Errors from parts of code that
worked perfectly minutes ago. What's even more puzzling is that those
errors are pointed to another part of the module when I do some random,
innofensive changes in the code (like inserting a line or deleting some
comments). Sometimes those changes are enough to make the error
dissapear.

Python 2.4.1 has a bug where this can happen if you're 1) using coding
directives, and 2) your module is relatively large.

I suggest upgrading to 2.4.3.

</F>
 
R

Roy Smith

ishtar2020 said:
I've been writing my very first application in Python and everything is
running smoothly, except for a strange problem that pops up every once
in a while. I'm sure is the kind
of newbie thing every seasoned programmer knows.

Nobody here has a crystal ball. Please post your code, tell us what
changes you made, and cut-and-paste the entire error message and the
associated stack trace.
 
I

ishtar2020

I must add, when the python interpreter displays the traceback, with
the line that is producing the error, it doesn't look like the one I
got in the code.

This is the line where the interpreter finds the error

if text.list.toString() in limits:list)): <- Here is where
the error is found, but this line is not on my file

SyntaxError: invalid syntax

And this is the line I got on the file, looks like the interpreter is
mixing the second sentence with the end of the first one:

for i in range(self.initialPositionl+1,len(text.list)):
if text.list.toString() in limits:
self.finalPosition=i
break

It's quite puzzling. And if I change some lousy thing, like inserting a
newline between the sentences, the interpreter will find another error
somewhere else, even when that
part of the code was working flawlessly in previous runs
 
S

Steve Juranich

Roy said:
Nobody here has a crystal ball. Please post your code, tell us what
changes you made, and cut-and-paste the entire error message and the
associated stack trace.

Speak for yourself, Mr. I-Have-No-Crystal-Ball. Besides, any lummox knows
that crystal balls are for seeing the future, not for mind-reading. No, to
do proper mind reading you need youself a pointy hat and (preferably) a
deck of cards.

Sorry, weird day at work. Had to vent.
 
J

James Stroud

ishtar2020 said:
Hi everybody

I've been writing my very first application in Python and everything is
running smoothly, except for a strange problem that pops up every once
in a while. I'm sure is the kind
of newbie thing every seasoned programmer knows.

Sometimes a receive strange Syntax Errors from parts of code that
worked perfectly minutes ago. What's even more puzzling is that those
errors are pointed to another part of the module when I do some random,
innofensive changes in the code (like inserting a line or deleting some
comments). Sometimes those changes are enough to make the error
dissapear.

Could it be that python has found a real error but is failing to tell
me where it is?

I don't mean to accuse you or to start a tab v. non-tab war (is tab v.
non-tab a holy war?, it should be because tabs are so damn useful for
formatting and getting everything just-right), but don't use tabs if you
are using them. Here are the reasons: 1. they personally annoy me. 2.
you can't see the damn things (hence the basis for why they are so
annoying). "Tab" comes from the root for the Greek for "table" (or is it
the other way around?, or is it Latin? or Arabic? or Hebrew?). Thus,
tabs should be reserved for thier god-given intended purpose, which is
tab-delimited tables, where a parser can easily separate by them.
Internal, and hence annoying, tabs should not be used elsewhere because
it screws everything up. For example, here is a tab-delimited parser
written in python


table = []
for line in tab_delimited_table:
table.append(line.split('\t'))


Man that was easy! Now, when people put annoying tabs everywhere, to get
their indent just-so, then it totally screws everything up, including
this parser, which was designed for tables delimited by tabs--because
that is the tab's special purpose.

There is one exception however. Its called the tab-space-tab approach.
If you are using tabs to indent your code, then always put at least one
space between tabs. Never put two tabs together. This helps the editor
to display your code correctly.

James

--
James Stroud
UCLA-DOE Institute for Genomics and Proteomics
Box 951570
Los Angeles, CA 90095

http://www.jamesstroud.com/
 
C

Christopher Weimann

This is the line where the interpreter finds the error

if text.list.toString() in limits:list)): <- Here is where


That line has two extra close parens before the :

Can you show the traceback?
 
S

sushant.sirsikar

Are U Using any IDE for Python?
If yes then check out the setting and make sure that u are running same
code.
 
D

Dennis Lee Bieber

I must add, when the python interpreter displays the traceback, with
the line that is producing the error, it doesn't look like the one I
got in the code.

This is the line where the interpreter finds the error

if text.list.toString() in limits:list)): <- Here is where
the error is found, but this line is not on my file


You must have something unwanted in the file...
And this is the line I got on the file, looks like the interpreter is
mixing the second sentence with the end of the first one:

for i in range(self.initialPositionl+1,len(text.list)):
if text.list.toString() in limits:


...as it is carrying data from the upper line into the lower line!

That is, the list)): appears to be part of the line
above.


I'd almost suspect your editor somehow has stored cursor movement
characters such that the file looks correct in the editor, but is full
of garbage in a parser...
--
 
D

Dennis Lee Bieber

Speak for yourself, Mr. I-Have-No-Crystal-Ball. Besides, any lummox knows
that crystal balls are for seeing the future, not for mind-reading. No, to
do proper mind reading you need youself a pointy hat and (preferably) a
deck of cards.
As an occassional dabbler in the Tarot, I can assure you that cards
are NOT used for "mind-reading"; they merely offer up a possible future
which must be interpreted in light of the querant's situation... (or,
since I typically read for myself -- the allow my subconscious to reveal
my inclinations based upon the cards' meanings)
--
 
F

Fredrik Lundh

ishtar2020 said:
It's quite puzzling. And if I change some lousy thing, like inserting a
newline between the sentences, the interpreter will find another error
somewhere else, even when that part of the code was working flaw-
lessly in previous runs

what Python version are you using ?

(I've already provided an explanation in another post, but it seems that
neither you nor the "it's your fault" crowd read that...).

</F>
 
S

Steven D'Aprano

I must add, when the python interpreter displays the traceback, with
the line that is producing the error, it doesn't look like the one I
got in the code.

I sometimes get that problem when I'm running code, I make a change in the
source file, use reload() to update my module, but forget to reinitialise
my objects still in memory.

So I end up with (buggy) instances in memory, but when I hit a traceback,
the source code displayed has nothing to do with the actual error because
the source file has been edited.

If you are getting these weird errors when you do nothing but change
comments, there is a good chance that's what is happening.

Here is an example of that behaviour. Is this the sort of thing which is
happening to you?


# === File tester.py ===

class Parrot(object):

def speak(self):
print "I'm pining for the fjords."

def species(self, colour=None):
return "Norwegian " + colour


Now import the file:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "tester.py", line 9, in species
return "Norwegian " + colour
TypeError: cannot concatenate 'str' and 'NoneType' objects


Now I edit the file, just adding comments and nothing else:


# === File tester.py ===

class Parrot(object):

# Add some comments here.
# Line two.

def speak(self):
print "I'm pining for the fjords."

def species(self, colour=None):
return "Norwegian " + colour


But if I execute the old existing object, I get a nonsensical error:
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "tester.py", line 9, in species
print "I'm pining for the fjords."
TypeError: cannot concatenate 'str' and 'NoneType' objects

Even doing a reload() doesn't help. I have to delete the old instance, and
create a new one.
 
S

Steve Juranich

Dennis said:
As an occassional dabbler in the Tarot, I can assure you that cards
are NOT used for "mind-reading"; they merely offer up a possible future
which must be interpreted in light of the querant's situation... (or,
since I typically read for myself -- the allow my subconscious to reveal
my inclinations based upon the cards' meanings)

Who said anything about tarot? I'm talking about the old "Pick a card, any
card..." bit.

Cheers.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,537
Members
45,021
Latest member
AkilahJaim

Latest Threads

Top