浅谈Python2、Python3相对路径、绝对路径导入方法

下面是针对“浅谈Python2、Python3相对路径、绝对路径导入方法”的完整攻略。

1. Python 2和Python 3的文件路径表示方式

在Python 2中,文件路径表示方式使用的是相对路径和绝对路径。而在Python 3中,新增了一种方式,即使用包(package)的相对路径。下面我们分别来看Python 2和Python 3文件路径表示方式的具体使用方法。

1.1 在Python 2中的文件路径

在Python 2中,文件路径表示方式使用的是相对路径和绝对路径。

1.1.1 相对路径

相对路径表示的是当前脚本所在的路径为起点,向下查找相对路径所表示的目标路径。

例如,当前我们有一个文件夹myproject,其中包含一个Python文件test.py,还有一个文件夹mylib,下面我们演示一下在test.py中如何使用相对路径导入mylib文件夹下的mymodule.py模块。

myproject/test.py:

from mylib import mymodule

myproject/mylib/mymodule.py:

def my_function():
    print("hello world!")

test.py中,我们使用了from mylib import mymodule语句导入了mymodule.py模块。这里的mylib表示当前脚本所在的路径下的mylib文件夹。

1.1.2 绝对路径

绝对路径表示的是从根目录开始的完整路径,可以直接指定文件所在的目录。

例如,在Linux系统下,我们的代码文件很可能位于/home/myname/myproject/文件夹中。此时我们可以直接使用/home/myname/myproject/mylib/mymodule.py作为导入语句。

1.2 在Python 3中的文件路径

在Python 3中,新增了一种我们称之为“包路径”的相对路径表示方式。我们可以使用包路径来导入相同或不同包内的模块。

1.2.1 包路径

使用包路径的方式是在__init__.py文件中定义属性__path__,然后通过点号'.'来表示包路径。

例如,在myproject文件夹下的mylib文件夹中,有一个名为mymodule.py的Python文件。如果我们希望从test.py文件中导入mylib文件夹中的mymodule.py模块,可以使用import mylib.mymodule语句导入。

下面是演示代码:

myproject/mylib/__init__.py:

__path__ = ['mylib']

myproject/test.py:

from mylib.mymodule import my_function

myproject/mylib/mymodule.py:

def my_function():
    print("hello world!")

myproject/mylib/__init__.py文件中,我们定义了属性__path__,并将其设置为['mylib'],表示这个包的文件在当前目录下。

test.py中,我们使用了from mylib.mymodule import my_function语句导入了mymodule.py模块。

2. 示例说明

接下来,我们通过两个示例来说明Python 2和Python 3中如何使用相对路径和绝对路径导入模块。

2.1 Python 2中的路径导入示例

我们在一个名为test的父文件夹中放置了两个文件夹ab,以及一个文件test.py。其中,a文件夹下放置了一个名为module_a.py的文件,b文件夹下放置了一个名为module_b.py的文件。

test/a/module_a.py:

def fu_a():
    print("Hello, I am module a!\n")

test/b/module_b.py:

def fu_b():
    print("Hello, I am module b!\n")

test/test.py:

from a.module_a import *
from b.module_b import *

fu_a()
fu_b()

test.py文件中,我们先使用了相对路径导入了模块a.module_a和模块b.module_b,然后分别调用了这两个模块中的函数。这里需要注意的是,在Python 2中,我们需要使用from module_a import *这样的语法来导入模块,而不能使用像Python 3那样使用点号导入模块。

2.2 Python 3中的路径导入示例

我们在一个名为project的父文件夹中放置了两个文件夹lib_alib_b,以及一个文件main.py。其中,lib_a文件夹下放置了一个名为module_a.py的文件,lib_b文件夹下放置了一个名为module_b.py的文件。

project/lib_a/module_a.py:

def fu_a():
    print("Hello, I am module a!\n")

project/lib_b/module_b.py:

def fu_b():
    print("Hello, I am module b!\n")

project/main.py:

from lib_a.module_a import *
from lib_b.module_b import *

fu_a()
fu_b()

main.py文件中,我们依然使用了相对路径导入模块lib_a.module_a和模块lib_b.module_b,然后分别调用了这两个模块中的函数。这里需要注意的是,在Python 3中我们使用点号.来导入模块。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈Python2、Python3相对路径、绝对路径导入方法 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python爬虫实现POST request payload形式的请求

    以下是关于“Python爬虫实现POST request payload形式的请求”的完整攻略: Python爬虫实现POST request payload形式的请求 在Python爬虫中,我们经常需要使用POST请求来提交数据。有时候,我们需要使用request payload形式来提交数据。以下是Python爬虫实现POST request paylo…

    python 2023年5月15日
    00
  • Python函数生成器原理及使用详解

    Python函数生成器原理及使用详解 Python中的生成器是一种特殊的函数,它可以在需要时生成一系列值,而不是一次性生成所有值。生成器可以帮助我们节省内存,并提高程序的效率。本文将详细介绍Python函数生成器的原理及使用方法,并提供两个示例。 生成器的原理 生成器是一种特殊的函数,它使用yield语句返回一个值,并暂停函数的执行。当生成器被调用时,它会返…

    python 2023年5月15日
    00
  • python的逻辑与循环详解

    Python 逻辑运算符 Python 的逻辑运算符有三种:and、or 和 not。 逻辑运算符用于组合条件语句,又称组合连接符。 运算符 逻辑表达式 描述 and x and y 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 or x or y 如果 x 是 True,它返回 x 的计算值,否则它返回 y 的计算…

    python 2023年5月13日
    00
  • python实现报表自动化详解

    下面我们来详细讲解“Python实现报表自动化详解”的完整实例教程。 简介 报表自动化是指使用计算机程序自动化地生成、处理、分析和展示数据,从而帮助人们更高效、准确地完成各种报表工作。Python是一种流行的编程语言,被广泛应用于数据分析和处理领域。在本教程中,我们将介绍如何使用Python实现报表自动化,以便更好地利用计算机程序处理和展示数据。 实现步骤 …

    python 2023年5月13日
    00
  • Python推导式数据处理方式

    Python推导式是一种简便高效的数据处理方式,通常用于生成新的序列或字典,以及对现有序列或字典的筛选、变换等操作。本文将为您介绍Python推导式数据处理的完整攻略。 一、Python推导式的基本语法 Python推导式(也称为列表推导式或字典推导式)的基本语法如下: 列表推导式: [expr for var in iterable if conditio…

    python 2023年5月14日
    00
  • python实现识别手写数字 python图像识别算法

    下面是详细讲解“Python实现识别手写数字的图像识别算法”的完整攻略,包括算法原理、Python实现和两个示例。 算法原理 手写数字识别是图像识别的一个重要应用,其基本思想是将手写数字图像转换为数字特征向量,然后使用分类算法对其进行分类。常用的手写数字识别法包括KNN、SVM、神经网络等。其中,神经网络是一种非常有效的手写数字识别算法,其基本思想是通过多层…

    python 2023年5月14日
    00
  • 使用批处理for命令清除事件查看器所有Windows EventLog日志

    清除事件查看器所有Windows EventLog日志需要使用批处理for命令,下面是完整攻略: 步骤一:打开命令提示符窗口 按下Win+R快捷键,打开运行对话框,输入cmd并按下Enter键,打开命令提示符窗口。 步骤二:输入for命令清除Windows EventLog日志 输入以下命令: for /f "tokens=*" %1 i…

    python 2023年6月13日
    00
  • Python 组合不受约束重复

    【问题标题】:Python combinations no repeat by constraintPython 组合不受约束重复 【发布时间】:2023-04-01 14:12:01 【问题描述】: 我有一个元组(Name, val 1, val 2, Class) tuple = ((“Jackson”,10,12,”A”), (“Ryan”,10,20…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部