0

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

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

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

4

2 回答 2

2

在许多情况下,您获取的不是 *.py 文件,__file__而是 *.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)
于 2016-05-13T11:58:31.430 回答
0

你可以简单地做:

import sys
f= open(sys.argv[0])
content = f.read()
print content
于 2016-05-13T13:19:48.483 回答