简单的python模块出错

时间:2012-02-07 22:36:39

标签: python shell

我今天尝试编写一个小的python脚本但是失败了。为什么下面的代码在从shell调用后会给我以下错误?

错误

File "./testmod.py", line 15, in <module>
    printdnsfile(sys.argv[1])
  File "./testmod.py", line 10, in printdnsfile
    print(socket.gethostbyname(str(line)))
socket.gaierror: [Errno 8] nodename nor servname provided, or not known

代码

#!/usr/bin/python

def printdnsfile(file):
    file= open (file,"r")
    import socket
    dest = open("/dnsfile.txt",'w')
    for line in file:
        print(socket.gethostbyname(str(line)))
        print>>dest, str(",".join([line,socket.gethostbyname(line)])+'\n')

if __name__ == "__main__":
    import sys
    printdnsfile(sys.argv[1]) 

我在python-console中测试了socket模块,它按预期工作。我的代码是否有错误,或者这是我配置的问题?

感谢。

2 个答案:

答案 0 :(得分:2)

输入文件中可能有一个空行。尝试在gethostbyname之前检查你的行。

def printdnsfile(file):
    file= open (file,"r")
    import socket
    dest = open("/dnsfile.txt",'w')
    for line in file:
        line = line.strip()
        if line:
            print(socket.gethostbyname(str(line)))
            print>>dest, str(",".join([line,socket.gethostbyname(line)])+'\n')

答案 1 :(得分:1)

问题可能是line不包含预期值。为了确保这一点,您可以在失败的行之前添加print line语句,或使用pdb来调试程序。