Я бы еще посоветовал не делать сначала чтение в буфер потом обработку и запись - ведь обработка построчная - строку прочитал, обработал, записал и так пока есть что читать - алгоритм не вырубит вам комп когда случайно ему на вход подсунут файл размером в пару сотен гигабайт.
import socket
with open('urldict.txt', "rt") as file_in:
with open("newfile.txt", "w") as file_out:
for i in file_in:
host = i.strip()
file_out.write("%s [%s]" % (host, socket.gethostbyname(host)))