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)
格式化字符串允许嵌入表达式和变量,并将它们的值动态插入到字符串中。