Неправильно дергаете subprocess, уберите там знак =.
Должен быть вызов, типо subprocess.call(["xcopy", "source", "dest"]) , а у вас там сейчас присваивание вместо вызова.
Посмотрите примеры тут.
У вас sender ожидает в параметре text - строку которую надо отправить.
Вы вместо строки скармливаете ему file object.
Вам нужно после того как открыли файл - прочитать из него данные и потом скормить их в sender.
Как открыть файл и прочитать из него текст смотрите здесь и здесь
У вас разные PYTHONPATH локально и в докере, условно в одном добавлено /путь_до_проета/app, в другом нет.
Как вариант добавьте нужные пути в PYTHONPATH в докере.
Теоретически можно так сделать.
Например сделать virtualenv, поставить туда зависимости и таскать потом скрипт вместе с папкой энва куда вам нужно.
Но проблемы с переносимостью могут быть, во первых потому что бинарники в зависимостях собираются под вашу систему, во-вторых потому что некоторые либы требуют предустановленных системных пакетов.
p = re.compile(r'^br', re.MULTILINE)
with open(test, mode='r') as openfile:
result = re.sub(p, "\n", openfile.read())
print(result)
# Запись результата в файл
with open('out', 'w') as out:
out.write(result)
Вам стоит разобраться, для чего вам питон. Язык - это инструмент решения задач, от этого и стоит отталкиваться.
Хотите в веб - изучайте фреймворк и сопутствующие технологии, хотите в data science - тоже самое, изучайте стек и технологии. Но для всего этого нужно знать сам язык, и тут вам помогут документация и книги.
Из книг посмотрите «Python. К вершинам мастерства» Лучано Рамальо. Ну или Лутца.
Пройтись по введенному числу и посмотреть на каждую цифру в нем. Найти максимальную цифру в числе - X. Минимально возможная СЧ будет Х + 1. Например, если Х = 7, минимально возможная СЧ - восьмеричная.
Если планируете поддерживать СЧ больше десятеричной - надо помнить, что там появятся буквы и их надо будет правильно обработать.