On Fri, 24 Oct 2008 10:42:21 -0700, asit wrote: > I code in both windows and Linux. As python is portable, the o/p should > be same in both cases. But why the following code is perfect in windows > but error one in Linux ???
So what *is* the error on Linux!? > def scan(ip,port,timeout): > s = socket(AF_INET, SOCK_STREAM) > s.settimeout(timeout) > try: > result= s.connect_ex((ip, port)) > except: > print "Cannot connect to IP" > return > s.close() > return status[result] The bare ``except`` catches *all* errors in the ``try`` block, even those you might know about because they don't belong to the set of exceptions you expected. Like `NameError`, `MemoryError`, `KeyboardInterrupt`, … And the function can return two quite different types… > if (len(sys.argv) == 4): > ip=sys.argv[1] > minrange = int(sys.argv[2]) > maxrange = int(sys.argv[3]) > timeout = 3 > > ports=range(minrange,maxrange+1) > > for port in ports: > print str(port) + " : " + scan(ip,port,timeout) …one of which is `None` and that will blow up here, regardless of platform. In [18]: " : " + None --------------------------------------------------------------------------- <type 'exceptions.TypeError'> Traceback (most recent call last) /home/bj/<ipython console> in <module>() <type 'exceptions.TypeError'>: cannot concatenate 'str' and 'NoneType' objects Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list