Re: IndentationError: expected an indented block but it's there

2013-05-29 Thread Chris Angelico
On Wed, May 29, 2013 at 2:53 AM, Peter Otten __pete...@web.de wrote:
 Chris Angelico wrote:

 On Wed, May 29, 2013 at 2:19 AM, Peter Otten __pete...@web.de wrote:
 Solution: configure your editor to use four spaces for indentation.

 ITYM eight spaces.

 I meant: one hit of the Tab key should add spaces up to the next multiple of
 four. Which implies

 But the real solution is to not mix tabs and
 spaces. Stick to one or the other and you're safe.

Sure. If you configure your tab *key* to not insert a tab *character*,
then you're fine. Or alternatively, if you always use \t for
indentation, you can tweak the displayed width of it. (Or, as I do,
just let it be eight wide. On today's screens that's not much of a
problem.)

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


IndentationError: expected an indented block but it's there

2013-05-28 Thread JackM

Having a problem getting a py script to execute. Got this error:

File /scripts/blockIPv4.py, line 19
ip = line.split(';')[0]
 ^
IndentationError: expected an indented block


I'm perplexed because the code that the error refers to *is* indented:



with open('/var/www/html/mydomain.com/banlist.txt','r') as inFile:
for line in inFile.readlines():
ip = line.split(';')[0]
output = os.popen( '/etc/sysconfig/iptables -A INPUT -s ' + ip 
+ ' -j REJECT' )

logFile.write(ip+' - Has been blocked\n')


What am I missing here?




--
My email address on the header is a non-monitored spam catching account. 
I can be reached via http://www.wvnh.net/contact.htm

--
http://mail.python.org/mailman/listinfo/python-list


Re: IndentationError: expected an indented block but it's there

2013-05-28 Thread Michael Torrie
On 05/28/2013 09:32 AM, JackM wrote:
 Having a problem getting a py script to execute. Got this error:
 
 File /scripts/blockIPv4.py, line 19
  ip = line.split(';')[0]
   ^
 IndentationError: expected an indented block
 I'm perplexed because the code that the error refers to *is* indented:
 with open('/var/www/html/mydomain.com/banlist.txt','r') as inFile:
  for line in inFile.readlines():
  ip = line.split(';')[0]
  output = os.popen( '/etc/sysconfig/iptables -A INPUT -s ' + ip 
 + ' -j REJECT' )
  logFile.write(ip+' - Has been blocked\n')
 
 
 What am I missing here?

Indentation has to be consistent.  likely the for line is indented with
spaces and the next line with a tab.  You can use tabs and spaces, but
you have to be consistent with how you use them.  IE if level 1 is
indented with spaces, then level 2 has to be indented with spaces up to
level 1 as well.  Hope that makes sense.



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: IndentationError: expected an indented block but it's there

2013-05-28 Thread Steven D'Aprano
On Tue, 28 May 2013 11:32:06 -0400, JackM wrote:

 Having a problem getting a py script to execute. Got this error:
 
 File /scripts/blockIPv4.py, line 19
  ip = line.split(';')[0]
   ^
 IndentationError: expected an indented block
 
 
 I'm perplexed because the code that the error refers to *is* indented:

Whenever you get perplexing indentation errors, suspect an inconsistency 
due to mixed tabs and spaces.

Tabs good. Spaces good. Tabs and spaces together, bad.

You can run the tabnanny module over your source code:

python -m tabnanny  file-or-directory


to convert indentation to all spaces.


-- 
Steven
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: IndentationError: expected an indented block but it's there

2013-05-28 Thread Peter Otten
JackM wrote:

 Having a problem getting a py script to execute. Got this error:
 
 File /scripts/blockIPv4.py, line 19
  ip = line.split(';')[0]
   ^
 IndentationError: expected an indented block
 
 
 I'm perplexed because the code that the error refers to *is* indented:
 
 
 
 with open('/var/www/html/mydomain.com/banlist.txt','r') as inFile:
  for line in inFile.readlines():
  ip = line.split(';')[0]
  output = os.popen( '/etc/sysconfig/iptables -A INPUT -s ' + ip
 + ' -j REJECT' )
  logFile.write(ip+' - Has been blocked\n')
 
 
 What am I missing here?

If you are mixing tabs and spaces to indent your code and have your editor 
configured with a tab width other than eight your code may look correct when 
it isn't. A simulation in the interactive interpreter:

The actual file contents:

 s = if 1:\n\tif 2:\n\tprint 'hi'

What you see:

 print s.expandtabs(4)
if 1:
if 2:
print 'hi'
 exec s.expandtabs(4)
hi

What Python sees:

 print s.expandtabs(8)
if 1:
if 2:
print 'hi'
 exec s
Traceback (most recent call last):
  File stdin, line 1, in module
  File string, line 3
print 'hi'
^
IndentationError: expected an indented block

Solution: configure your editor to use four spaces for indentation.

-- 
http://mail.python.org/mailman/listinfo/python-list


Re: IndentationError: expected an indented block but it's there

2013-05-28 Thread Chris Angelico
On Wed, May 29, 2013 at 2:19 AM, Peter Otten __pete...@web.de wrote:
 Solution: configure your editor to use four spaces for indentation.

ITYM eight spaces. But the real solution is to not mix tabs and
spaces. Stick to one or the other and you're safe.

ChrisA
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: IndentationError: expected an indented block but it's there

2013-05-28 Thread Peter Otten
Chris Angelico wrote:

 On Wed, May 29, 2013 at 2:19 AM, Peter Otten __pete...@web.de wrote:
 Solution: configure your editor to use four spaces for indentation.
 
 ITYM eight spaces. 

I meant: one hit of the Tab key should add spaces up to the next multiple of 
four. Which implies

 But the real solution is to not mix tabs and
 spaces. Stick to one or the other and you're safe.


-- 
http://mail.python.org/mailman/listinfo/python-list