首页 > 编程 > Python > 正文

Python不同目录间进行模块调用的实现方法

2020-02-16 00:59:25
字体:
来源:转载
供稿:网友

一、背景

之前写了软件开发目录规范这篇博客,相信很多人都已经知道,我们在写程序时需要遵循一定的规范,不然,就算很简答的逻辑程序的代码,读起来会很费劲,占用了我们大量的时间,但是,我们一旦用了这样的规范目录,我们怎么去愉快的进行模块之前的相互导入呢?这就不得不说我们今天讨论的两个概念:绝对路径和相对路径。

二、函数功能解释

1、__file__

功能:返回自身文件的相对路径

#atm.py中的代码print(__file__) #pycharm的执行结果D:/Python/Python35/python.exe D:/PycharmProjects/51homework/Atm/bin/atm.pyD:/PycharmProjects/51homework/Atm/bin/atm.py #打印出绝对路径#从cmd执行atm.py D:/PycharmProjects/51homework>python Atm/bin/atm.py Atm/bin/atm.py  #打印的是相对路径 

从上面看,为什么pycharm中执行的结果是绝对路径,而从cmd调用python命令时显示的却是相对路径?你从pycharm的执行结果可以看出,在pycharm执行atm.py文件时,是从绝对路径下去执行的,而你从cmd下去执行的时候,是你选择可以在哪个路径下执行,而__file__表示的是相对路径,所以在哪个路径下,就打印哪个路径。

2、os.path.abspath()

功能:返回自身文件的绝对路径

#atm.py的文件代码import osprint(os.path.abspath(__file__))#在cmd中的执行结果D:/PycharmProjects/51homework>python Atm/bin/atm.pyD:/PycharmProjects/51homework/Atm/bin/atm.py #获取atm.py的绝对路径 

3、os.path.dirname()

功能:返回目录名,不需要文件名

print(os.path.dirname( os.path.abspath(__file__) ))D:/PycharmProjects/51homework/Atm/bin #只返回目录名,不需要文件名 

4、sys.path

功能:python环境的执行的环境变量

import sysprint(sys.path)#cmd执行的结果['D://PycharmProjects//51homework//Atm//bin', 'D://Python//Python35//python35.zip', 'D://Python//Python35//DLLs', 'D://Python//Python35//lib', 'D://Python//Python35', 'D://Python//Python35//lib//site-packages'] 

注:执行路径是列表的形式打印出来的,所以sys.path数据类型是一个列表。

三、绝对路径和相对路径

1、绝对路径

绝对路径:从根目录为起点到你所在的目录。

>>> import os>>> os.chdir("D://PycharmProjects//51homework//Atm//bin//")>>> os.listdir()['atm.py', '__init__.py']>>> os.path.abspath('atm.py')'D://PycharmProjects//51homework//Atm//bin//atm.py'  #是从D盘的这个根目录下来的 

2、相对路径

相对路径:从一个目录为起点到你所在的目录。

>>> import os>>> os.chdir("D://PycharmProjects//51homework//Atm//bin//")>>> os.listdir()['atm.py', '__init__.py']>>> os.path.dirname('atm.py')''  #显示相对路径            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表