Я пытаюсь сделать свой код модульным, потому что он слишком длинный, проблема в том, что я не знаю, делаю ли я это безопасно. Я сегментировал свой код на разные файлы, поэтому один файл Python запускает остальные, иногда мне приходится вызывать 1 файл, который будет запускать другой файл, который будет запускать другой файл, так что несколько цепочек команд.
Проблема в том, что некоторые файлы будут обрабатывать конфиденциальную информацию, такую как пароли, поэтому я не знаю, делаю ли я это безопасно. В идеале после выполнения 1 файла он должен сам закрыться и удалить все переменные из памяти и освободить это пространство, как обычно, как если бы я просто выполнял 1 файл, проблема в том, что я не знаю, Я называю несколько файлов, вложенных друг в друга, это относится. Очевидно, что очищается только файл, который выполняется, а не тот, который активен, но я не знаю, так ли это.
Я так называю свои модули
os.system('python3 ' + filename)
И в каждом файле впоследствии один и тот же код, вызывающий другой файл с os.system
, образуя вложенную или сцепленную систему вызовов.
Например, если я вызываю первый файл из оболочки:
python3 file1.py
, а затем file1 вызывает:
os.system('python3 file2.py')
, а затем file2 вызывает:
os.system('python3 file3.py')
Я бы хотел, чтобы file3 был очищен из памяти и полностью закрыт после его запуска, тогда как file2 и file1 все еще могут быть активны. Я не хочу, чтобы file3 оставался в памяти после того, как он сам себя выполнил. Поэтому, если file3 работает с паролями, он, очевидно, должен удалить их из памяти после запуска.
Как это сделать?
Я читал о нескольких вариантах:
from subprocess import call
call(["python3", "file2.py"])
import subprocess
subprocess.call("file2.py", shell=True)
execfile('file2.py')
import subprocess
subprocess.Popen("file2.py", shell=True)
Какой из них безопаснее?