跨目录调用函数

导入模块调用函数在未手动设置环境变量的前提下只能导入同级或者子级模块,一个完整的项目程序结构与上图类似,由一个总的文件夹包含多个子文件夹,以上图为例,如果想实现不管这个总的文件夹在哪个位置都能动态的实现模块导入级函数调用,可以这样做(在atm中导入main并调用main中的login函数):

import os
import sys
print(os.path.abspath(__file__))   #__file__是两个_组成
#获取绝对路径:E:\PYTHON程序\04\目录结构规范\bin\atm.py
print(os.path.dirname(os.path.abspath(__file__)))
#绝对路径的文件名路径,就是绝对路径的上一级:E:\PYTHON程序\04\目录结构规范\bin
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
#再往上一级:E:\PYTHON程序\04\目录结构规范

BASA_DIR = os.path.dirname( os.path.dirname( os.path.abspath( __file__ ) ) )
sys.path.append(BASA_DIR)   #添加BASA.DIR环境变量,相当总文件夹于不管在什么位置都能动态添加其位置到环境变量
from conf import settings   
from core import main       #导入core中的main,这种方法只能使用from的导入格式,from后的文件夹可以直接写中文
main.login()
#结果:welcome to my atm
main中的函数:

def login():
    print("welcome to my atm")




在Python中,文件夹调用函数通常需要使用相对导入或绝对导入。具体方法取决于你的项目结构和文件夹结构。 假设你有两个文件夹,`folder1`和`folder2`,它们都在同一个父文件夹中。你想在`folder2`中调用`folder1`中的函数。 方法一:相对导入 如果你的Python文件在`folder2`中,并且你想调用`folder1`中的函数,你可以使用相对导入。你需要确保你的Python文件和函数在同一个包(package)中。例如,如果你的文件结构如下: ```markdown - main_folder - folder1 - my_function.py - main_script.py - folder2 - main_script.py ``` 在`main_script.py`文件中,你可以使用以下代码来调用`folder1`中的函数: ```python from .folder1 import my_function # 使用点号表示同一包下的文件或文件夹 ``` 注意:如果你的文件夹或文件在不同的包中,你可能需要使用完整的相对路径,如 `from parent_folder.folder1 import my_function`。 方法二:绝对导入 另一种方法是使用绝对导入。你可以直接指定要调用的函数所在的文件夹和文件名。例如: ```python import folder1.my_function # 使用绝对路径导入函数文件 ``` 然后,你可以使用该函数名调用函数。请注意,这种方法可能不适用于所有情况,特别是当你的项目结构非常复杂时。 无论你选择哪种方法,都需要确保你的Python解释器能够找到要调用的函数文件和路径。这通常意味着你的项目文件夹需要被正确地添加到Python的路径中。你可以通过修改环境变量或在代码中添加适当的import语句来实现这一点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值