今天主要学习关于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同学计划


Summer
83 声望9 粉丝

关于Python学习的一些小知识