Python 为什么使用exec()时会出现语法错误?

Python 为什么使用exec()时会出现语法错误?,python,Python,当执行到达try:except:时,此函数从粘贴到粘贴库中获取标题为py_0001的python脚本,并抛出错误 SyntaxError:行连续字符后出现意外字符 如果复制脚本的值并将其声明为字符串变量,则执行时不会出现任何错误 该函数在到达错误处理部分之前工作正常 def get_script(): ''' grabs python script from pastebin ''' reg_ = r'[a-zA-Z0-9]*\">py_0001' res

当执行到达
try:except:
时,此函数从粘贴到粘贴库中获取标题为
py_0001
的python脚本,并抛出错误
SyntaxError:行连续字符后出现意外字符

如果复制
脚本的值并将其声明为字符串变量,则执行时不会出现任何错误

该函数在到达错误处理部分之前工作正常

def get_script():
    ''' grabs python script from pastebin '''
    reg_ = r'[a-zA-Z0-9]*\">py_0001'
    resp = requests.get(url='https://pastebin.com/u/'+usr_name)
    path = re.findall(reg_ , str(resp.content) , re.MULTILINE)  
    url2 = "https://pastebin.com/raw/"+ str(path[0]).replace('">py_0001' , '')
    resp2 = requests.get(url2)
    script_ = str(resp2.content)[2:-1]
    print (script_)


  
    try:
      exec(script_)
    except:
      print ("3rr0r")
这是粘贴到粘贴箱的输出

import os\r\nimport time \r\nimport random \r\n \r\ndef fun_9991():\r\n    ## a simple code example to test \r\n    for i in range (0 , 10 ):\r\n        print ( " loop count {} , random number is {} , time is {} ".format(i , random.randrange(10) , int(time.time()/1000)))\r\n    print ("loop reached the end")\r\n    \r\n \r\nif __name__ == "__main__":\r\n    fun_9991()\r\n\r\n\r\n

您的问题是在字节对象上调用
str()
。切勿对字节对象调用
str()
,将其转换为字符串,因为其行为类似于
repr()
。仅使用[2:-1]将仅删除引号,而不会撤消转义其他特殊字符

您可以这样做:

script_ = resp2.content.decode('utf-8')
或者这个:

script_ = resp2.text

另外,从互联网上执行随机代码是一个非常糟糕的主意。

你想执行什么?这是完整的python脚本吗?您几乎不应该在字节对象上调用
str()。改为使用
.decode
。我正在尝试执行代码的最后一位。我正在创建此随机代码,并使用虚拟机对其进行测试