如何访问作为模块导入的python代码

2024-09-26 18:06:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个py脚本,应该用来在excel文件上执行不同的操作。 此脚本将其他py脚本作为模块导入。 不幸的是,我没有此脚本的可执行版本,无法将其用作桌面应用程序,也无法访问作为模块导入的脚本

这似乎是一个奇怪的问题,但是如果我没有访问权限,有没有办法访问作为模块导入到另一个python中的python脚本的代码

例如,我正在使用的脚本名为my_script.py

#imports
  import pandas as pd
  import json
  import io

#importing python script as module
  import script1 --the script for which I don't have the code(without this script I can't use my_script.py)

因此,我试图看看是否有办法从script1访问代码,以便将其保存在与我的_script.py相同的文件夹中


Tags: 模块文件the代码pyimport版本脚本
2条回答

正如其他人所说,如果您可以导入它,您肯定可以访问脚本。但如果你真的想这样做:

import inspect
import script1
    
print(inspect.getsource(script1))

只是想告诉你其他人的意思。尝试这样做:

print(script1.__file__)

这将为您提供导入模块的路径。您应该能够打开该文件并查看源代码

你的问题没有意义,因为如果你想读取文件,你显然必须对你想读取的文件拥有读取权限。所以,不,如果你没有读取文件的权限,那么你就不能访问和读取它。但是,如果导入文件对您有效(因为您可以读取它),那么您应该能够访问源代码

一般来说,标准库inspect用于处理以下内容:

import re
import inspect
source_python_code = inspect.getsource(re.findall)
print(source_python_code)

请记住,这只会起到目前为止的作用。例如,您不能检查已编译的代码(python不会在运行中神奇地为您对已编译的代码进行反向工程)。还有其他一些事情,比如可能导致行号不准确并产生错误代码的装饰器,等等

如果您需要内存中用于所使用函数的实际编译python字节,那么__code__方法已经可以访问这些字节。比如说,

print(re.findall.__code__.co_code)

相关问题 更多 >

    热门问题