小编Mik*_*ler的帖子

在 python 中的 os.environ 上使用 copy.deepcopy 似乎已损坏

我可能只是错过了一些关于 os.environ 或 copy.deepcopy 如何工作的文档,但似乎 copy.deepcopy 在 os.environ 上不起作用。但如果我将 os.environ 重建为新字典,它就可以正常工作。这是我的示例代码:

import copy
import os

tcsh_loc = '/bin/tcsh'
safe_dict = {}
for key in os.environ.keys():
    safe_dict[key] = os.environ[key]

safe_dict['SAFE_ENV'] = 'non-leaked-var'
os.spawnv(os.P_WAIT, tcsh_loc, [tcsh_loc, '-c', 'echo $SAFE_ENV'])
os.spawnve(os.P_WAIT, tcsh_loc, [tcsh_loc, '-c', 'echo $SAFE_ENV'], safe_dict)

unsafe_dict = copy.deepcopy(os.environ)
unsafe_dict['UNSAFE_ENV'] = 'leaked-var'
os.spawnv(os.P_WAIT, tcsh_loc, [tcsh_loc, '-c', 'echo $UNSAFE_ENV'])
os.spawnve(os.P_WAIT, tcsh_loc, [tcsh_loc, '-c', 'echo $UNSAFE_ENV'], unsafe_dict)
Run Code Online (Sandbox Code Playgroud)

我期望得到的是:

SAFE_ENV: Undefined variable.
non-leaked-var
UNSAFE_ENV: Undefined variable.
leaked-var
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

SAFE_ENV: Undefined variable.
non-leaked-var
leaked-var
leaked-var
Run Code Online (Sandbox Code Playgroud)

这意味着不知何故 …

python environment-variables deep-copy

5
推荐指数
1
解决办法
5059
查看次数

标签 统计

deep-copy ×1

environment-variables ×1

python ×1