Продолжим.
1. Я имел в виду не переименование strings, а убирание этого списка, как класса.
Как по-вашему что лучше читается:
print i18n.format(key + 1, total, uri) или print “\n{0} from {1} ({2})\nGetting the page…”.format(key + 1, total, uri) ?
Просто используйте строки прямо в коде, никуда их не нужно выносить. Они добавляют читабельности.
2. Если args вам не нужен, то можно делать так: (options, _args) = parser.parse_args()
Тогда pylint не будет ругаться на неиспользованную переменную.
3. default для -d какой-то странный. Я бы сделал просто текущий каталог. Это обычный ожидаемый эффект для скриптов такого типа. Для того же, чтобы найти куда ваш скрипт положил результат нужно будет смотреть в сорцы, что не гуд.
4. Вместо -l я бы попользовался args. Ваша строка - это не опция, а аргумент.
5. Зачем передавать строку в виде <a href=“bla-bla”>, а потом регекспами выдирать это bla-bla? проще просто передать туда “bla-bla”, тогда и пользоваться будет проще и регекспы не нужны.
6.
total = len(matches)
if total == 0:
return 1
замените на
Это не Си, а Python.
7. try_again = ‘y’ поставьте прямо перед циклом, где он используется.
8.
if content == '':
try_again = raw_input(i18n[3])
else:
break
замените на
if not content:
try_again = raw_input("ERROR. Try again? (y or n)")
9. Вместо ''.join((options.dir, file_name))) используйте os.path.join, оно правильно делает пути в зависимости от OS, на которой запускается.
Пока достаточно. Исправите - приходите еще :) И не забудьте проверять pylint-ом.