我今天尝试编写一个小的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模块,它按预期工作。我的代码是否有错误,或者这是我配置的问题?
感谢。
答案 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
来调试程序。