将* .py脚本转换为字符串

时间:2016-05-13 11:41:55

标签: python utf python-importlib

我运行了一堆脚本,通常我将结果存储在MongoDB中。为了确保我可以将结果与输入脚本链接,我将整个脚本存储为文本。这在Python 3中使用以下代码片段很好地工作:

    module = importlib.import_module(module)
    with open(module.__file__) as ff:
        source = ff.read()

在Python 2中应用相同的技巧会导致混乱。最初,变量模块是一个字符串,例如a.b.foo。不幸的是我还不能废除Python 2。

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