我尝试使我的代码模块化,因为它太长了,问题是我不知道我这样做是否安全。我将代码分段到不同的文件中,因此 1 个 python 文件运行其他文件,有时我必须调用 1 个文件来运行另一个文件,另一个文件将运行另一个文件,因此有多个链接命令。
问题是某些文件会处理密码等敏感信息,所以我不知道这样做是否安全。理想情况下,执行 1 个文件后,它应该自行关闭,并从内存中删除所有变量,并释放该空间,就像通常我只执行 1 个文件一样,问题是我不知道是否我将多个文件称为相互嵌套,这适用。显然,只有被执行的文件才应该清除自身,而不是事件的文件,但我不知道是否是这种情况。
我一直这样调用我的模块
os.system('python3 ' + filename)
随后在每个文件中,相同的代码使用 os.system 调用另一个文件,形成嵌套或链式调用系统。
例如,如果我从 shell 调用第一个文件:
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)
哪一种更安全?
最佳答案
Python 严重依赖导入的概念。您不应该尝试在这方面重新发明轮子。只需从主脚本导入脚本并使用函数来触发它们。如果您想确保丢弃变量,您应该在函数末尾或在变量不再使用时包含 del 语句。
另一方面,您的密码问题从一开始就有缺陷。如果 .py 文件包含纯文本密码,则在任何情况下它都不会受到保护。您应该实现一个 secret :请参阅此主题:I need to securely store a username and password in Python, what are my options?
关于python - 如何安全地运行另一个Python文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56444185/