hardlinkpy-0.0.20180725-alt1.noarch 1) Выполнить команду hardlinkpy -n / (dry-run) или 2) Прервать выполнение команды hardlinkpy (натравить hardlinkpy на большой каталог и нажать ctrl+c) Результат: в выводе ошибки вида Traceback (most recent call last): File "/usr/bin/hardlinkpy", line 492, in <module> main() File "/usr/bin/hardlinkpy", line 487, in main hardlink_identical_files(directories, pathname, options) File "/usr/bin/hardlinkpy", line 262, in hardlink_identical_files options): File "/usr/bin/hardlinkpy", line 148, in are_files_hardlinkable result = are_file_contents_equal(filename1, filename2, options) File "/usr/bin/hardlinkpy", line 136, in are_file_contents_equal return filecmp.cmp(filename1, filename2, shallow=False) File "/usr/lib64/python3.7/filecmp.py", line 62, in cmp outcome = _do_cmp(f1, f2) File "/usr/lib64/python3.7/filecmp.py", line 75, in _do_cmp with open(f1, 'rb') as fp1, open(f2, 'rb') as fp2: PermissionError: [Errno 13] Permission denied: '//sys/module/sr_mod/uevent' ^CTraceback (most recent call last): File "/usr/bin/hardlinkpy", line 492, in <module> main() File "/usr/bin/hardlinkpy", line 487, in main hardlink_identical_files(directories, pathname, options) File "/usr/bin/hardlinkpy", line 262, in hardlink_identical_files options): File "/usr/bin/hardlinkpy", line 148, in are_files_hardlinkable result = are_file_contents_equal(filename1, filename2, options) File "/usr/bin/hardlinkpy", line 136, in are_file_contents_equal return filecmp.cmp(filename1, filename2, shallow=False) File "/usr/lib64/python3.7/filecmp.py", line 62, in cmp outcome = _do_cmp(f1, f2) File "/usr/lib64/python3.7/filecmp.py", line 78, in _do_cmp b2 = fp2.read(bufsize) KeyboardInterrupt Ожидаемый результат: считаю, что данные негативные сценарии нужно обрабатывать (не вываливать в консоль названия функций и номера строк, а выводить нормальные пользовательские сообщения).
Для питона это типа нормально.
На самом деле нет. В питоне можно легко сделать обработку таких ошибок, их интерпретацию и вывод в человеческом формате.