[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

相关文章

基于Python编写一个git自动上传的脚本(打包成exe)

《基于Python编写一个git自动上传的脚本(打包成exe)》这篇文章主要为大家详细介绍了如何基于Python编写一个git自动上传的脚本并打包成exe,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录前言效果如下源码实现利用pyinstaller打包成exe利用ResourceHacker修改e

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

Python中Tkinter GUI编程详细教程

《Python中TkinterGUI编程详细教程》Tkinter作为Python编程语言中构建GUI的一个重要组件,其教程对于任何希望将Python应用到实际编程中的开发者来说都是宝贵的资源,这篇文... 目录前言1. Tkinter 简介2. 第一个 Tkinter 程序3. 窗口和基础组件3.1 创建窗

Django调用外部Python程序的完整项目实战

《Django调用外部Python程序的完整项目实战》Django是一个强大的PythonWeb框架,它的设计理念简洁优雅,:本文主要介绍Django调用外部Python程序的完整项目实战,文中通... 目录一、为什么 Django 需要调用外部 python 程序二、三种常见的调用方式方式 1:直接 im

Python字符串处理方法超全攻略

《Python字符串处理方法超全攻略》字符串可以看作多个字符的按照先后顺序组合,相当于就是序列结构,意味着可以对它进行遍历、切片,:本文主要介绍Python字符串处理方法的相关资料,文中通过代码介... 目录一、基础知识:字符串的“不可变”特性与创建方式二、常用操作:80%场景的“万能工具箱”三、格式化方法

Springboot配置文件相关语法及读取方式详解

《Springboot配置文件相关语法及读取方式详解》本文主要介绍了SpringBoot中的两种配置文件形式,即.properties文件和.yml/.yaml文件,详细讲解了这两种文件的语法和读取方... 目录配置文件的形式语法1、key-value形式2、数组形式读取方式1、通过@value注解2、通过

浅析python如何去掉字符串中最后一个字符

《浅析python如何去掉字符串中最后一个字符》在Python中,字符串是不可变对象,因此无法直接修改原字符串,但可以通过生成新字符串的方式去掉最后一个字符,本文整理了三种高效方法,希望对大家有所帮助... 目录方法1:切片操作(最推荐)方法2:长度计算索引方法3:拼接剩余字符(不推荐,仅作演示)关键注意事

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

Python自动化提取多个Word文档的文本

《Python自动化提取多个Word文档的文本》在日常工作和学习中,我们经常需要处理大量的Word文档,本文将深入探讨如何利用Python批量提取Word文档中的文本内容,帮助你解放生产力,感兴趣的小... 目录为什么需要批量提取Word文档文本批量提取Word文本的核心技术与工具安装 Spire.Doc

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin