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
。我正在尝试执行代码的最后一位。我正在创建此随机代码,并使用虚拟机对其进行测试