SyntaxError: invalid syntax (windows)

MRAB google at mrabarnett.plus.com
Wed Mar 25 11:56:01 EDT 2009


Python Newsgroup wrote:
> I'm a total newbe to scripting not to mention python. However I was able 
> to successfully create a telnet script to initiate login, initiate tftp, 
> exit, exit, confirm and close session. Frustrated, possibly causing my 
> own misery. I replace the sript the script with the standard example.
> 
> import getpass
> import sys
> import telnetlib
> 
> HOST = "remote linux"
> user = raw_input("Enter your remote account: ")
> password = getpass.getpass()
> 
> tn = telnetlib.Telnet(HOST)
> 
> tn.read_until("login: ")
> tn.write(user + "\n")
> if password:
>    tn.read_until("Password: ")
>    tn.write(password + "\n")
> 
> tn.write("ls\n")
> tn.write("exit\n")
> 
> print tn.read_all()
> 
> Regardless of the script content, running in windows I constently get 
> this SyntaxError:
> 
> C:\Python30>python c:\Python30\scripts\telnet.py
>  File "c:\Python30\scripts\telnet.py", line 20
>    print tn.read_all()
>           ^
> SyntaxError: invalid syntax
> 
> C:\Python30>
> 
> The same script works fine from linux.
> 
> I have also notices some other slight differences: this is my original 
> script that runs and completes but only if I comment out print. Also 
> tried to run debug without success in windows again this worked fine in 
> linux. To run this script in linux I also had to remove the b syntax in 
> the "b" in the perentesis
> 
> import telnetlib
> # import pdb
> 
> HOST = "HP switch"
> 
> tn = telnetlib.Telnet(HOST)
> 
> tn.read_until(b'Password: ')
> tn.write(b'password\n')
> 
> pdb.set_trace()
> 
> tn.read_until(b'HP switch# ')
> tn.write(b' sh time\n')
> 
> tn.read_until(b'HP switch# ')
> tn.write(b'exit\n')
> 
> tn.read_until(b'HP switch> ')
> tn.write(b'exit\n')
> 
> tn.read_until(b'Do you want to log out [y/n]? ')
> tn.write(b'y')
> 
> print tn.read_all()
> 
> Any guidance would be appreciated.
> 
It looks like you're using Python 3.0 on Windows and Python 2.x on
Linux.

In Python 2.x, 'print' is a statement:

     print tn.read_all()


In Python 3.x, 'print' is a function, so you need to write:

     print(tn.read_all())



More information about the Python-list mailing list