python的os模块详细解读(二)

简介: python的os模块详细解读(二)

python的os模块详细解读(一):https://developer.aliyun.com/article/1495764

shutil模块 复制/移动

shutil 是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。

shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。

import shutil
#copyfileobj(fsrc, fdst[, length=16*1024])  复制文件 (length的单位是字符(表达一次读多少字符/字节))
"""
fp_src = open("3.txt",mode="r",encoding="utf-8")
fp_dst = open("4.txt",mode="w",encoding="utf-8")
shutil.copyfileobj(fp_src,fp_dst)
"""

#copyfile(src,dst)   #单纯的仅复制文件内容 , 底层调用了 copyfileobj
# shutil.copyfile("4.txt","5.txt")

#copymode(src,dst)   #单纯的仅复制文件权限 , 不包括内容  (虚拟机共享目录都是默认777)
"""注意: 要先有两个文件才可以,不会默认创建"""
shutil.copymode("4.txt","5.txt")


#copystat(src,dst)   #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容
shutil.copystat("4.txt","5.txt")


#copy(src,dst)       #复制文件权限和内容
shutil.copy("5.txt","6.py")


#copy2(src,dst)      #复制文件权限和内容,还包括权限,组,用户,时间等
shutil.copy2("5.txt","7.py")



#copytree(src,dst)   #拷贝文件夹里所有内容(递归拷贝)。
# shutil.copytree("lianxi","lianxi2")


#rmtree(path)        #删除当前文件夹及其中所有内容(递归删除)  ,目录中有文件也能递归删除,不能删除文件否则报错
# shutil.rmtree("lianxi2")

#move(path1,paht2)   #移动文件或者文件夹,权限也附带移动
# shutil.move("7.py","lianxi/888.php")
shutil.move("7.py","/888.php")

os.path 路径模块

import os

pathvar = "/home/wangwen/mywork/ceshi.py"
pathvar = __file__
#basename() 返回文件名部分
res = os.path.basename(pathvar)
print(res)

#dirname() 返回路径部分

res = os.path.dirname(pathvar)
print(res)

basename和dirname在框架django和flask中使用比较多

#split() 将路径拆分成单独的路径部分和文件名部分 组合成一个元组
print(os.path.split(__file__))

#os.sep将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 linux / windows\ ***

path1 = "home"
path2 = "wangwen"
path3 = "mywork"
pathvar = path1 + os.sep + path2 + os.sep + path3
print(pathvar)

#用join改造,路径分隔符会根据系统自动添加,不用自己手动加了

path_new = os.path.join(path1,path2,path3)
print(path_new)

#splitext() 将路径分割为后缀和其他部分 (了解) 方便取文件后缀,以最后一个 . 后面为后缀 可以使用str的split方法根据 . 分隔取代

pathvar = "/home/wangwen/mywork/ceshi.py"
print(  os.path.splitext(pathvar)  )
print(  pathvar.split(".")[-1]  )

os.path.realpath()

Python中的方法用于通过消除路径中遇到的任何符号链接来获取指定文件名的规范路径。

#getsize() 获取文件的大小 ***

#获取路径

#pathvar = os.path.dirname(__file__) # 方法一
pathvar = os.getcwd() # 方法二
path_new = os.path.join(pathvar,"2.py")
print(path_new)

#计算文件大小,得到的是字节,int类型

res = os.path.getsize(path_new)
print(pathvar)
res = os.path.getsize("/mnt/hgfs/python32_gx/day14")
print(res)

#isdir() 检测路径是否是一个文件夹 返回True或者False***

res = os.path.isdir("/mnt/hgfs/python32_gx/day14")
print(res)

#isfile() 检测路径是否是一个文件 ***

res = os.path.isfile("/mnt/hgfs/python32_gx/day16/1.py")
print(res)

#islink() 检测路径数否是一个链接

res = os.path.islink("/home/wangwen/mywork/1122.py")
print(res)

#getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳)

import time
res = os.path.getctime("/home/wangwen/mywork/4.txt")

#getmtime() 获取文件最后一次修改时间(返回时间戳)

res = os.path.getmtime("/home/wangwen/mywork/4.txt")

#getatime() 获取文件最后一次访问时间(返回时间戳)

res = os.path.getatime("/home/wangwen/mywork/4.txt")
print(res)
print(time.ctime(res))

#exists() 检测指定的路径是否存在 ,文件目录都可以检测***

res = os.path.exists("/home/wangwen/mywork/4.txt")
#res = os.path.exists("4.txt")
print(res,"<============>")

#isabs() 检测一个路径是否是绝对路径

res = os.path.isabs("2.py")
print(res)

#abspath() 将相对路径转化为绝对路径,前提是该文件要在当前python的工作目录,或者切换目录后的目录。不然计算出的绝对路径是错误的

res = os.path.abspath("2.py")
print(res)

pathvar = "2.py"
if not os.path.isabs(pathvar):
    abs_path = os.path.abspath("2.py")
print(abs_path)

相关文章
|
4月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
565 7
|
4月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
381 0
|
4月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
481 4
|
5月前
|
安全 Python
告别 os.path 的繁琐:拥抱 Python 的 pathlib
告别 os.path 的繁琐:拥抱 Python 的 pathlib
476 6
|
4月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
448 0
|
4月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
367 0
|
5月前
|
安全 大数据 程序员
Python operator模块的methodcaller:一行代码搞定对象方法调用的黑科技
`operator.methodcaller`是Python中处理对象方法调用的高效工具,替代冗长Lambda,提升代码可读性与性能。适用于数据过滤、排序、转换等场景,支持参数传递与链式调用,是函数式编程的隐藏利器。
190 4
|
5月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
478 0
|
6月前
|
存储 安全 数据处理
Python 内置模块 collections 详解
`collections` 是 Python 内置模块,提供多种高效数据类型,如 `namedtuple`、`deque`、`Counter` 等,帮助开发者优化数据处理流程,提升代码可读性与性能,适用于复杂数据结构管理与高效操作场景。
436 0
|
7月前
|
数据安全/隐私保护 Python
抖音私信脚本app,协议私信群发工具,抖音python私信模块
这个实现包含三个主要模块:抖音私信核心功能类、辅助工具类和主程序入口。核心功能包括登录