我运行了一堆脚本,通常我将结果存储在MongoDB中。为了确保我可以将结果与输入脚本链接,我将整个脚本存储为文本。这在Python 3中使用以下代码片段很好地工作:
module = importlib.import_module(module)
with open(module.__file__) as ff:
source = ff.read()
在Python 2中应用相同的技巧会导致混乱。最初,变量模块是一个字符串,例如a.b.foo。不幸的是我还不能废除Python 2。
答案 0 :(得分: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)
答案 1 :(得分:0)
您可以这样做:
import sys
f= open(sys.argv[0])
content = f.read()
print content