gpt4 book ai didi

python - 使用 'exec' 函数在解释器 Shell 中运行脚本

转载 作者:行者123 更新时间:2023-12-01 05:26:29 30 4
gpt4 key购买 nike

我尝试通过 exec() 函数在 Python3 中运行脚本。

我正在阅读 O'Reilly 第五版《学习 Python》一书来学习 Python。在“第 2 章Python 如何运行程序》有一个类似这样的方法:

>>> exec(open('script1.py').read())

这是我的文件 script1.py

# A first script in python.
import sys
print(sys.platform)
print(2 **100)
x = 'Spam!'
print(x * 8)
input()

预期输出是:

win32
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!

工作中我只会使用WinXP :-(

但是Python3中的真实输出是:

>>> exec(open('script1.py').read())

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1
# A first script in python.
^
SyntaxError: invalid character in identifier
>>>

Python2 中的输出是:

>>> exec(open('script1.py').read())
win32
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 7, in <module>
File "<string>", line 0

^
SyntaxError: unexpected EOF while parsing
>>>

我不明白为什么这不像书上所说的那样有效。

最佳答案

问题出在您的编辑器中,它在文件开头添加了“不正确的符号”(实际上,该符号本身是正确的)。请检查一下。

如果你想验证这个猜想,请这样做

print open('script1.py').read(1)

在 python repl 中。

它可能是文件中的 BOM(感谢@devnull)。

如果是这样,您可以使用 encondig utf-8-sig 打开该文件:

 open('script1.py', encoding='utf-8-sig')

您可以在此处阅读更多相关内容:

什么是 BOM(字节顺序标记),您可以在这里找到:

当然,您将来必须避免在脚本中使用 BOM。请检查您的编辑器的设置,并确保保存脚本时不会创建 BOM。

关于python - 使用 'exec' 函数在解释器 Shell 中运行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236910/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com