gpt4 book ai didi

python - 如何通过 __reduce__ 实现代码执行来进行 pickle?

转载 作者:行者123 更新时间:2023-12-01 07:33:38 27 4
gpt4 key购买 nike

import pickle
import os

class Inject(object):
def __reduce__(self):
return (os.system, ('ls',))

serialize = pickle.dumps(Inject())
command_res = pickle.loads(serialize)
print(type(command_res))

问题是 pickle.loads 返回一个 tuple 并且元组的第二个元素是 int,所以 command_res > 将分配给 int,但我想获取 pickle.loads 的第一个索引 [0],所以 command_res 将被赋值给 str,它是 ls 的结果。

我怎样才能做到这一点?

最佳答案

问题是,如果您使用库 subprocess 执行命令,os.system 不会返回命令 ls 的输出。你得到输出并且可以得到一个 str 而不是 int,所以你的代码将是:

import pickle
import subprocess

class Inject(object):
def __reduce__(self):
return (subprocess.check_output, (['ls'],))

serialize = pickle.dumps(Inject())
command_res = pickle.loads(serialize).decode()
print(type(command_res))

关于python - 如何通过 __reduce__ 实现代码执行来进行 pickle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57099631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com