我们给出了一个任务,并在执行任务时显示了一个错误,并编写了下面的代码。因此在泡菜问题上需要帮助。请告诉我们编码出了什么问题-
import os
import builtins
import pickle
import sys
sys.tracebacklimit=0
import traceback
import io
from logging import Logger
safe_builtins = {
'range',
'complex',
'set',
'frozenset',
}
class RestrictedUnpickler(pickle.Unpickler):
def find_class(self, module, name):
# Only allow safe classes from builtins.
if module == "builtins" and name in safe_builtins:
return getattr(builtins, name)
# Forbid everything else.
raise pickle.UnpicklingError("global '%s.%s' is forbidden" %
(module, name))
def restricted_loads(s):
"""Helper function analogous to pickle.loads()."""
return RestrictedUnpickler(io.BytesIO(s)).load()
def func1(a):
try:
x= restricted_loads(pickle.dumps(a))
return x
except pickle.UnpicklingError :
s=traceback.format_exc()
return s
def func2(s):
try:
x=restricted_loads(pickle.dumps(s))
return s[x]
except pickle.UnpicklingError :
s=traceback.format_exc()
return s
if __name__ == "__main__":
a=range(int(input()))
b=func1(a)
print(b)
y=tuple(input())
z=func2(y)
print(z)我们假设问题是函数2,我们没有得到正确的输出。函数1工作得很好,这似乎是我们得到一些输出的原因。我们还为问题陈述附加了一个图像,即我们需要在不同的功能中执行什么。
请建议我们哪里出了问题。
TypeError: tuple indices must be integers or slices, not tuple
Input (stdin)
50
"a", "b", "c", "d", "e", "f", "g", "h"
Your Output (stdout)
range(0, 50)
Expected Output
range(0, 50)
Traceback (most recent call last):
_pickle.UnpicklingError: global 'builtins.slice' is forbidden

发布于 2021-02-06 07:01:49
#frescoplay pickle problem
import os
import builtins
import pickle
import sys
sys.tracebacklimit=0
import traceback
import io
from logging import Logger
safe_builtins = {
'range',
'complex',
'set',
'frozenset',
}
class RestrictedUnpickler(pickle.Unpickler):
def find_class(self, module, name):
# Only allow safe classes from builtins.
if module == "builtins" and name in safe_builtins:
return getattr(builtins, name)
# Forbid everything else.
raise pickle.UnpicklingError("global '%s.%s' is forbidden" %
(module, name))
def restricted_loads(s):
"""Helper function analogous to pickle.loads()."""
return RestrictedUnpickler(io.BytesIO(s)).load()
def func1(a):
try:
x= restricted_loads(pickle.dumps(a))
return x
except pickle.UnpicklingError :
s=traceback.format_exc()
return s
def func2(s):
try:
x=restricted_loads(pickle.dumps(slice(s)))
return s[x]
except pickle.UnpicklingError :
s=traceback.format_exc()
return s
if __name__ == "__main__":
a=range(int(input`enter code here`()))
b=func1(a)
print(b)
y=tuple(input())
z=func2(y)
print(z)发布于 2020-12-31 11:42:04
在func2中,编写x=restricted_loads(pickle.dumps(片))
https://stackoverflow.com/questions/64089371
复制相似问题