今天主要学习关于os模块、pathlib模块、sys模块、shutil模块、copy模块等模块的相关操作~
1.使用OS模块进行path路径操作
- 操作的语法为os.path.方法名();
import os # 首先导入os模块
- abspath()方法:获取当前文件的全路径,所带参数为__file__;
file_path = os.path.abspath(__file__) # 获取当前文件的全路径
print(file_path)
- dirname()方法: 获取当前文件的目录全路径,所带参数为文件全路径;
dir_path = os.path.dirname(file_path) # 获取当前文件的目录全路径
print(dir_path)
- join()方法:使用拼接方法来拼接路径,第一个参数为文件目录路径,第二个参数为需要拼接的路径;
img_path = os.path.join(dir_path, 'img') # 拼接路径
print(img_path)
- basename()方法:获取文件名,所带参数为文件全路径;
file_name = os.path.basename(file_path) # 获取文件名
print(file_name)
- split()方法:切割方法, 获取目录和文件名,所得结果为一个元组;
tuple_path = os.path.split(file_path) # 获取目录和文件名
print(tuple_path)
2.pathlib模块
- 使用pathlib模块需要导入Path类,将Path类实例化为一个path对象,或者直接使用Path类初始化新的路径;
from pathlib import Path
path = Path()
print(path) # 显示当前目录
path1 = Path('var', 'log', 'message') # 路径初始化
print(path1)
path2 = Path('/var', 'log', 'message') # 路径初始化
print(path2)
- joinpath()方法:拼接路径;
path3 = path2.joinpath('message.log') # 路径拼接 /var/log/message/message.log
print(path3)
- parent:返回目录路径;
path4 = path3.parent # 返回目录路径
print(path4)
- parents:返回一个路径对象,可通过for循环遍历获取;
path5 = path3.parents # 返回一个对象
print(path5)
- name:获取文件名;
for i in path5:
print(i)
print(path3.name) # message.log
- suffix:获取扩展名;
print(path3.suffix) # 扩展名
- suffixes:获取扩展名列表,列表类型;
print(path3.suffixes) # 扩展名列表
- cwd()方法:获取文件当前名;
print(path3.cwd()) # 当前目录
- glob()方法:通配符方法,如'*.log',表示找到所有以.log结尾的文件;
objs = path3.parent.parent.glob('*.log') # 匹配目录下面以.log结尾的文件
for i in objs:
print(i)
3.sys模块
- 使用之前需要导入sys模块;
import sys
- sys.argv:实现从程序外部向程序传递参数;
print(sys.argv[0]) # 当前文件路径
print(sys.argv.__len__() -1) # 参数个数
print(sys.argv[1]) # 第一个参数
- sys.path:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到;
print(sys.path) # Python的搜索路径
- sys.exit(n): 退出程序,正常退出时exit(0) ;
import sys
print("开始")
try:
sys.exit(1)
except SystemExit:
print("中途退出")
print("退出")
# 输出:
# 开始
# 中途退出
# 退出
- sys.modules :返回系统导入的模块字段,key是模块名,value是模块 ;
4.shutil模块
- 使用之前需要导入shutil模块;
- copy()方法:文件系统发级别的拷贝,将一个文件的内容拷贝到另一个文件中,类似于Linux系统的copy;
import shutil
# ./monitor.py 源文件
shutil.copy('./monitor.py', 'hello.py')
5.copy模块
- 使用之前需要导入copy模块;
- copy.copy():浅拷贝,只拷贝父对象,不会拷贝对象的内部的子对象;
- copy.deepcopy():深拷贝,复制了对象和对象的所有子对象;
import copy
lst = [1,123]
lst.copy()
# 浅拷贝
string1 = copy.copy('321')
print(string1) # 321
# 深拷贝
string2 = copy.deepcopy('321')
print(string2) # 321
6.文件路径斜杆问题
-
'/ '
:正斜杆,linux下使用正斜杆作为分隔符; -
'\ '
:反斜杆,windows下使用的是反斜杆作为分隔符; - 注意:网页的背景图片路径必需是
'/ '
正斜杆,还有'\'
反斜杆有时候代表转义符;
参考:侠课岛(9xkd.com)Python同学计划
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。