[Python进阶] 路径相关库:os、pathlib、shutil

2023-10-20 16:12

本文主要是介绍[Python进阶] 路径相关库:os、pathlib、shutil,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

6.10 路径相关:os、pathlib、shutil

6.10.1 返回当前用户目录

from icecream import ic
import os
from pathlib import Pathic(Path.home())
ic(os.path.expanduser('~'))

11:21:22|> Path.home(): WindowsPath(‘C:/Users/frb’)
11:21:22|> os.path.expanduser(‘~’): ‘C:\Users\frb’

6.10.2 返回绝对路径

from icecream import ic
import os
from pathlib import Pathpath = Path('.')
ic(path.resolve())
ic(os.path.abspath('.'))
ic(os.path.abspath('..'))

14:50:06|> path.resolve(): WindowsPath(‘E:/Syncdisk/PythonFiles’)
14:50:06|> os.path.abspath(‘…’): ‘E:\Syncdisk’
14:50:06|> os.path.abspath(‘.’): ‘E:\Syncdisk\PythonFiles’

6.10.3 返回文件的目录

from icecream import ic
import os
from pathlib import Pathpath1 = Path(r'G:\TCL\Temp\log.txt')
ic(path1.parent)
path2 = Path('./t1.py')
ic(path2.parent)
ic(os.path.dirname(r'G:\TCL\Temp\log.txt'))
ic(os.path.dirname('./t1.py'))

14:54:08|> path1.parent: WindowsPath(‘G:/TCL/Temp’)
14:54:08|> path2.parent: WindowsPath(‘.’)
14:54:08|> os.path.dirname(r’G:\TCL\Temp\log.txt’): ‘G:\TCL\Temp’
14:54:08|> os.path.dirname(‘./t1.py’): ‘.’

6.10.4 返回文件名

from icecream import ic
import os
from pathlib import Pathpath1 = Path(r'G:\TCL\Temp\log.txt')
ic(path1.name)
path2 = Path('./t1.py')
ic(path2.name)
ic(os.path.basename(r'G:\TCL\Temp\log.txt'))
ic(os.path.basename('./t1.py'))

14:56:54|> path1.name: ‘log.txt’
14:56:54|> path2.name: ‘t1.py’
14:56:54|> os.path.basename(r’G:\TCL\Temp\log.txt’): ‘log.txt’
14:56:54|> os.path.basename(‘./t1.py’): ‘t1.py’

6.10.5 返回文件扩展名

from icecream import ic
from pathlib import Pathpath1 = Path(r'G:\TCL\Temp\log.txt')
ic(path1.suffix)
path2 = Path('./t1.py')
ic(path2.suffix)

15:00:58|> path1.suffix: ‘.txt’
15:00:58|> path2.suffix: ‘.py’

6.10.6 返回带路径短文件名和扩展名

from icecream import ic
import osic(os.path.splitext(r'G:\TCL\Temp\log.txt'))
ic(os.path.splitext('./t1.py'))

15:00:58|> os.path.splitext(r’G:\TCL\Temp\log.txt’): (‘G:\TCL\Temp\log’, ‘.txt’)
15:00:58|> os.path.splitext(‘./t1.py’): (‘./t1’, ‘.py’)

6.10.7 返回连接的路径

from icecream import ic
import os
from pathlib import Pathpath1 = Path(r'G:\TCL\Temp')
ic(path1)
path2 = Path('t1.py')
ic(path2)
ic(path1.joinpath(path1, path2))
ic(Path.joinpath(path1, path2))
ic(Path(path1, path2))
ic(Path(r'G:\TCL\Temp', 't1.py'))
ic(os.path.join(r'G:\TCL\Temp', 'log.txt'))

15:19:10|> path1: WindowsPath(‘G:/TCL/Temp’)
15:19:10|> path2: WindowsPath(‘t1.py’)
15:19:10|> path1.joinpath(path1, path2): WindowsPath(‘G:/TCL/Temp/t1.py’)
15:19:10|> Path.joinpath(path1, path2): WindowsPath(‘G:/TCL/Temp/t1.py’)
15:19:10|> Path(path1, path2): WindowsPath(‘G:/TCL/Temp/t1.py’)
15:19:10|> Path(r’G:\TCL\Temp’, ‘t1.py’): WindowsPath(‘G:/TCL/Temp/t1.py’)
15:19:10|> os.path.join(r’G:\TCL\Temp’, ‘log.txt’): ‘G:\TCL\Temp\log.txt’

6.10.8 判断路径是否存在

from icecream import ic
import os
from pathlib import Pathf1 = r'G:\TCL\Temp\log.txt'
f2 = r'G:\TCL\Temp\log.py'
p1 = Path(f1)
p2 = Path(f2)
ic(p1.exists())
ic(p2.exists())
ic(os.path.exists(f1))
ic(os.path.exists(f2))

15:28:53|> p1.exists(): True
15:28:53|> p2.exists(): False
15:28:53|> os.path.exists(f1): True
15:28:53|> os.path.exists(f2): False

6.10.9 判断两个路径是否相同

from icecream import ic
import os
from pathlib import Pathpath1 = Path(r'G:\TCL\Temp\log2.txt')
path2 = Path('t1.py')
path3 = Path(r'E:\Syncdisk\PythonFiles\t1.py')
ic(Path.samefile(path1, path2))  # 路径不存在会报错
ic(Path.samefile(path2, path3))
ic(os.path.samefile(path1, path2))  # 路径不存在会报错
ic(os.path.samefile(path2, path3))

15:24:54|> Path.samefile(path1, path2): False
15:24:54|> Path.samefile(path2, path3): True
15:24:54|> os.path.samefile(path1, path2): False
15:24:54|> os.path.samefile(path2, path3): True

6.10.10 判断路径是否为符号连接

首先,先用批处理创建出2个连接文件,一个是符号连接,另一个是硬连接。

mklink loglink.txt log.txt
为 loglink.txt <<===>> log.txt 创建的符号链接
mklink /H log_hard.txt log.txt
为 log_hard.txt <<===>> log.txt 创建了硬链接

这样就为log.txt创建了2个连接文件,符号链接名为:loglink.txt,而硬连接名为:log_hard.txt。

from icecream import ic
import os
from pathlib import Pathf1 = r'G:\TCL\Temp\log.txt'
f2 = r'G:\TCL\Temp\log.txt.lnk'
f3 = r'G:\TCL\Temp\loglink.txt'
f4 = r'G:\TCL\Temp\log_hard.txt'
p1 = Path(f1)
p2 = Path(f2)
p3 = Path(f3)
p4 = Path(f4)
ic(p1.is_symlink())
ic(p2.is_symlink())
ic(p3.is_symlink())
ic(p4.is_symlink())
ic(os.path.islink(f1))
ic(os.path.islink(f2))
ic(os.path.islink(f3))
ic(os.path.islink(f4))

15:37:35|> p1.is_symlink(): False
15:37:35|> p2.is_symlink(): False
15:37:35|> p3.is_symlink(): True
15:37:35|> p4.is_symlink(): False
15:37:35|> os.path.islink(f1): False
15:37:35|> os.path.islink(f2): False
15:37:35|> os.path.islink(f3): True
15:37:35|> os.path.islink(f4): False

6.10.11 判断路径是否为绝对路径

Path.is_absolute()
os.path.isabs()

6.10.12 判断路径是否为目录

Path.is_dir()
os.path.isdir()

6.10.13 判断路径是否为文件

Path.is_file()
os.path.isfile()

这篇关于[Python进阶] 路径相关库:os、pathlib、shutil的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/248214

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

hdu2544(单源最短路径)

模板题: //题意:求1到n的最短路径,模板题#include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#i

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key: