[英]Using 'exec' Function to Run Script in the Interpreter Shell
我嘗試通過exec()函數在Python3中運行腳本。
我正在用O'Reilly第5版的“學習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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.