Почему возникает бесконечная рекурсия в операторе with?
не понимаю, о какой именно рекурсии речь, но на вашем месте исправил быurl_list = [x.strip for x in fh.read().split("\n")]
наurl_list = [x.strip() for x in fh.read().split("\n")]
А вы уверены, что здесь именно реккурсия? А вообще проще сделать так:url_list = fh.readlines()
Если конечно не важно, что в итоге получать - список или генератор