Я попытался написать небольшой скрипт python сегодня, но потерпел неудачу ужасно. Почему код ниже дает мне следующую ошибку после вызова из оболочки?
ошибка
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-консоли, и он работал, как ожидалось. Есть ли ошибка с моим кодом или это проблема с моей конфигурацией?
Благодарю.
В вашем исходном файле может быть пустая строка. Попробуйте проверить свою линию перед 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')
Вероятно, проблема в том, что line
не содержит ожидаемого значения. Чтобы убедиться в этом, вы можете добавить оператор print line
до строки, которая не работает или использует pdb
для отладки программы.