将 *.py 脚本转换为字符串
Converting the *.py script into a string
我 运行 一堆脚本,通常我将它们的结果存储在 MongoDB 中。为了确保我可以 link 使用输入脚本得到结果,我将整个脚本存储为文本。这在 Python 3 中使用以下代码片段非常有效:
module = importlib.import_module(module)
with open(module.__file__) as ff:
source = ff.read()
在Python 2 中应用相同的技巧会导致一团糟。最初,变量模块是一个字符串,例如 a.b.foo。可惜我还不能取消Python 2呢。
在许多情况下,您不会获得带有 __file__
的 *.py 文件,而是 *.pyc 文件。在你的情况下,这确实是一团糟。只需切断文件名的最后一个字符 ;)
import os
import importlib
#new_module = __import__("module")
new_module = importlib.import_module("module")
new_module_filename = os.path.realpath(new_module.__file__)
if new_module_filename.endswith(".pyc"):
new_module_filename = new_module_filename[:-1]
with open(new_module_filename) as ff:
source = ff.read()
print(source)
你可以简单地做:
import sys
f= open(sys.argv[0])
content = f.read()
print content
我 运行 一堆脚本,通常我将它们的结果存储在 MongoDB 中。为了确保我可以 link 使用输入脚本得到结果,我将整个脚本存储为文本。这在 Python 3 中使用以下代码片段非常有效:
module = importlib.import_module(module)
with open(module.__file__) as ff:
source = ff.read()
在Python 2 中应用相同的技巧会导致一团糟。最初,变量模块是一个字符串,例如 a.b.foo。可惜我还不能取消Python 2呢。
在许多情况下,您不会获得带有 __file__
的 *.py 文件,而是 *.pyc 文件。在你的情况下,这确实是一团糟。只需切断文件名的最后一个字符 ;)
import os
import importlib
#new_module = __import__("module")
new_module = importlib.import_module("module")
new_module_filename = os.path.realpath(new_module.__file__)
if new_module_filename.endswith(".pyc"):
new_module_filename = new_module_filename[:-1]
with open(new_module_filename) as ff:
source = ff.read()
print(source)
你可以简单地做:
import sys
f= open(sys.argv[0])
content = f.read()
print content