博主头像
CFX | Work

一个业余的分享网站

Python学习

获取Python模块的路径

在Python中,模块是组织代码的一种方式,每个.py文件都是一个模块。有时,我们需要获取一个模块的路径,这在需要定位模块文件、读取模块配置文件或动态加载模块时非常有用。Python提供了几种方法来获取模块的路径。......

代码示例:

01:使用__file__属性

  • 每个模块都有一个__file__属性,它包含了模块文件的路径。
print(__file__)
# 运行输出的是当前文件的完整路经。

02.使用sys模块

  • sys模块中的path属性是一个列表,包含了Python搜索模块的路径。
import sys

# 获取当前模块的路径
current_module_path = sys.modules[__name__].__file__

# 打印模块路径
print(current_module_path)

# 打印所有模块搜索路径
print(sys.path)

03.使用os.path模块

  • os.path模块提供了许多与路径操作相关的函数,可以用来获取模块的绝对路径。
import os

# 获取当前模块的路径
current_module_path = os.path.abspath(__file__)

# 打印模块路径
print(current_module_path)

相对路经 绝对路经 引入路经

相对路经

  • 相对于当前文件的路经
    比如读取当前文件所在的同级目录文件,用open方法

    with open("./file.py" ,'r') as file:
      str_data = file.read()

    绝对路经

  • 完整的路经

    import os
    
    abs_path = os.path.abspath(__file__)
    # 当前文件的绝对路经
    
    dir_path = os.path.dirname(__file__)
    # 当前文件所在文件夹的绝对路经
    dir_path = os.path.abspath('.')
    # 当前文件所在文件夹的绝对路经
    
    dir_path = os.path.abspath('..')
    # 表示当前所处的文件夹上一级文件夹的绝对路径
    print(abs_path)

引入路经

  • 在给变量赋值路径时,要注意斜杠在python的字符串中有转义的作用,例如:

    dir_path='C:\Users\haha\bs\Datacastle_subsidy'

会报语法错误,解决:在路径前面加一个r,或者\改为\\这样:

# 加r前缀
dir_path=r'C:\Users\haha\bs\Datacastle_subsidy'
# 加\转义
dir_path='C:\\Users\\haha\\bs\\Datacastle_subsidy'

python中r' ', b' ', u' ', f' '的含义及用法详解

r': 原始字符串

1. 基本用法

# 使用r前缀创建原始字符串
path = r'C:\Users\Username\Documents'
print(path)
在上述示例中,r前缀将字符串中的反斜杠\视为普通字符,而不是转义字符。

2. 与转义字符的比较

# 普通字符串与原始字符串的比较
normal_str = 'C:\\Users\\Username\\Documents'
raw_str = r'C:\Users\Username\Documents'

print(normal_str == raw_str)  # 输出 True
原始字符串与普通字符串在表示相同的文本时是相等的,但原始字符串更容易阅读和维护。

b': 字节字符串

1. 基本用法

# 使用b前缀创建字节字符串
binary_data = b'\x48\x65\x6c\x6c\x6f'  # 字母 'Hello' 的字节表示
print(binary_data)
在上述示例中,b前缀表示字节字符串,每个\x后面跟着两个十六进制数字,表示一个字节。

2. 字符串与字节字符串的区别

# 字符串与字节字符串的区别
text = 'Hello'
binary_data = b'Hello'

print(type(text))  # 输出 <class 'str'>
print(type(binary_data))  # 输出 <class 'bytes'>
字符串和字节字符串是不同的数据类型,字符串用于文本,字节字符串用于二进制数据。

u': Unicode字符串

1. 基本用法

# 使用u前缀创建Unicode字符串(Python 2示例)
unicode_text = u'你好,世界!'
print(unicode_text)
在Python 3中,无需使用u前缀,普通字符串即为Unicode字符串。

2. Unicode字符串与普通字符串的区别

# Unicode字符串与普通字符串的区别(Python 2示例)
text = 'Hello'
unicode_text = u'Hello'

print(type(text))  # 输出 <type 'str'>
print(type(unicode_text))  # 输出 <type 'unicode'>
在Python 2中,Unicode字符串与普通字符串是不同的数据类型,用于区分文本编码。

f': 格式化字符串

1. 基本用法

# 使用f前缀创建格式化字符串
name = 'Alice'
age = 30
greeting = f'Hello, my name is {name} and I am {age} years old.'
print(greeting)
在上述示例中,f前缀表示格式化字符串,大括号{}内的表达式会被计算并插入到字符串中。

2.表达式和变量

# 在格式化字符串中使用表达式和变量
x = 10
y = 20
result = f'The sum of {x} and {y} is {x + y}'
print(result)
格式化字符串允许嵌入表达式和变量,并将它们的值动态插入到字符串中。
Python学习
https://cfx.work/index.php/archives/14/
本文作者 silence
发布时间 2024-11-28
许可协议 CC BY-NC-SA 4.0
发表新评论