python - 如何安全地运行另一个Python文件?

标签 python python-3.x file security module

我尝试使我的代码模块化,因为它太长了,问题是我不知道我这样做是否安全。我将代码分段到不同的文件中,因此 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/

相关文章:

c# - 如果目录内容在迭代过程中发生变化,Directory.EnumerateFiles 会发生什么?

c++ - 无法从文件中读取下一行

string - 读取包含字符串的行(Bash)

Python 机器学习 - 输入分类数据?

python - 变量变化时的 Panel/Hvplot 交互

python - 如果其他列满足某些条件,如何打印不同列中的值?

python - Pandas - Dataframe.set_index - 如何保留旧索引列

python - 极坐标中的 Matplotlib 密度图?

python-3.x - 机器学习预处理错误

python-3.x - 如何将 reduce 函数的每次迭代存储在列表中?