Написать выходы из скрипта впадающих в особенность

Я не могу получить выходные данные скрипта через единственное число.

У меня есть скрипт Python, в конце которого вывод сохраняется с:

...
with open('saveOut.pkl','wb') as myFile:
    pickle.dump(myTable,myFile)

Я хочу запустить этот сценарий с исключительной особенностью на удаленной машине. Поскольку я изучаю особенности, я сделал образ Debian "песочницы" (еще не скомпилированный в один файл "img") в каталоге /tmp/debian; на этом изображении я скопировал скрипт Python test.py в /usr/src и я запускаю его с помощью команды:

sudo singularity exec /tmp/debian python3.5 /usr/src/test.py

Эта проблема:

Это работает хорошо, пока я только показал результаты. с примером рассола, описанным выше, я не получаю saveOut.pkl файл где угодно: этот файл просто нигде не записан, но я не вижу ни одного сообщения. Я попытался написать явный путь в скрипте Python. Например /usr/src/saveOut.pkl, но это то же самое.

Как я мог написать результат?

Каков был ваш ожидаемый результат, т.е. в каком каталоге вы ожидали найти выходной файл?

Я ожидаю файл saveOutput.pkl где-нибудь, в контейнере или нет, мне все равно, где. В настоящее время я не получаю это вообще: ни в текущем каталоге контейнера, ни в контейнере /usr/src/ни на хосте, ни где угодно.

Вы искали его на хосте или в контейнере?

и то и другое нигде не вижу

1 ответ

Здесь происходит то, что ваш скрипт на python записывает файл pickle в его текущее местоположение (/usr/src/ в контейнере). Затем, поскольку выходные данные из вашего сценария не являются постоянными (из-за того, что песочница не может быть записана при выполнении), она удаляется в конце выполнения.

Я считаю, что вы могли бы изменить свой сценарий:

with open('/opt/saveOut.pkl','wb') as myFile:
    pickle.dump(myTable,myFile)

а затем свяжите локальный каталог и получите результат, который вы ищете:

sudo singularity exec -B ./:/opt /tmp/debian python3.5 /usr/src/test.py  

Во всяком случае, это сработало для меня.

Другие вопросы по тегам