Python中exec调用的语法错误

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

关于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
        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’