Python中exec调用的语法错误
关于exec命令的快速python问题。我有Python2.7.6,我正试图利用exec运行一些存储在.txt文件中的代码。我遇到了一个语法错误,不完全确定是什么原因造成的Python中exec调用的语法错误,python,syntax,exec,Python,Syntax,Exec,关于exec命令的快速python问题。我有Python2.7.6,我正试图利用exec运行一些存储在.txt文件中的代码。我遇到了一个语法错误,不完全确定是什么原因造成的 Traceback (most recent call last): File "/Users/XYZ/Desktop/parser.py", line 46, in <module> try_code(block) File "<string>", line 1
Traceback (most recent call last):
File "/Users/XYZ/Desktop/parser.py", line 46, in <module>
try_code(block)
File "<string>", line 1
x = 'Hello World!'
^
SyntaxError: invalid syntax
以及节目的主体
inputFile = open('/Users/XYZ/Desktop/test.txt', 'r+')
starter = False
finished = False
check = 1
block = ""
for val in inputFile:
starter = lookForStart(val)
finished = lookForEnd(val)
if lookForStart:
check = 1
elif finished:
try_code(block)
if check == 1:
check = 0
elif finished == False:
block = block + val
基本上,我正在尝试导入一个文件(test.txt),然后在其中查找一些嵌入式代码。为了使它更容易,我用指示器包围了它,这样就可以开始和结束了。然后我将所有隐藏的代码连接成一个字符串,并对其调用try_code。然后try_代码尝试执行它(它确实执行了,使用print语句进行检查),但由于语法错误而失败
作为一个注释,如果我隐藏了像
x = 5
print x
因此,无论问题是什么,似乎都是出于某种原因处理字符串
编辑
textedit似乎包含一些不正常显示的额外字符。我在另一个文本编辑器(text-wrangler)中重写了测试文件,看起来字符已经消失了。非常感谢大家帮助我解决问题,我很感激。这是一个字符编码问题。除非你已经;在Python2上默认为“ascii” 您试图执行的代码包含非ascii引号:
>>> print b'\xe2\x80\x98Hello World\xe2\x80\x99'.decode('utf-8')
‘Hello World’
修复它;改用普通单引号:“Hello World”
您可以使用decode方法检查block
是否不包含非ascii字符:block.decode('ascii')
如果存在异常,则会引发异常
对该主题的温和介绍:.什么是/Users/XYZ/Desktop/test.txt的内容?除了隐藏的代码,它只是胡言乱语。大约有20行,下面15行,我有x='Hello World',然后是'print x'。接着是更多的胡言乱语。@user2998189——在你尝试执行
exec
之前,你能告诉我们block
的实际内容吗?@mgilson——当然,就在执行block之前是“x='Hello World'[newline]print x”新行在文本中没有显示出来,但是我不知道如何使它在注释中显示为新行。@user2998189——试试print repr(block)
。
>>> print b'\xe2\x80\x98Hello World\xe2\x80\x99'.decode('utf-8')
‘Hello World’