偷学Python第二十七天:PythonOS模块的详细用法
古之立大事者,不惟有超世之才,亦必有坚忍不拔之志。——苏轼
文章目录
- 偷学Python第二十七天:PythonOS模块的详细用法
- OS模块
- 目录操作
- 创建目录
- 删除目录
- 重命名目录
- 获取目录
- 遍历目录
- 文件操作
- 总结
- 明日学习计划
- 甜甜有话说
目标:可以用Python做一些简单的数据分析。
坚持完成自己的目标!勿忘初心~
OS模块
Python中的os
模块提供了非常丰富的方法用来处理文件和目录。使用·import
来引入此模块
目录操作
创建目录
mkdir()
方法用于以数字权限模式当前目录下创建目录。默认的模式为 0777 (八进制)
语法格式
os.mkdir(path[, mode])
- path – 要创建的目录
- mode – 要为目录设置的权限数字模式
注意:在Windows下mode参数无效
makedirs()
方法用于递归创建目录。可以创建多个目录,其中exist_ok为False,表示目录存在抛出异常。
语法格式
os.makedirs(path, mode=0o777)
- path – 需要递归创建的目录。
- mode – 权限模式。
示例代码
import os
os.mkdir("..\\test_dir") # 创建目录上一级目录
# 判断是否创建成功
print(os.path.isdir("..\\test_dir")) # True
os.makedirs("test_dirs\\test_dir") # 递归创建目录
print(os.path.isdir("test_dirs\\test_dir")) # True
os.makedirs("Y:/02test/Python/02 进阶部分")
print(os.path.isdir("Y:/02test/Python/02 进阶部分")) # True
删除目录
rmdir()
方法用于删除指定路径的目录。仅当这文件夹是空的才可以, 否则, 抛出OSError。
语法格式
os.rmdir(path)
path – 要删除的目录路径
removedirs()
方法用于递归删除目录。注意如果目录不为空,会抛出OSError:[Errno 66] Directory not empty.
语法格式
os.removedirs(path)
path – 要移除的目录路径
示例代码
import os
os.rmdir("..\\test_dir") # 删除目录
# 判断是否删除成功
print(os.path.isdir("..\\test_dir")) # False 目录不存在表示以删除
os.removedirs("test_dirs\\test_dir") # 递归删除目录
print(os.path.isdir("test_dirs\\test_dir")) # False
os.removedirs("Y:/02test/Python/02 进阶部分")
print(os.path.isdir("Y:/02test/Python/02 进阶部分")) # False
重命名目录
rename()
方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。
语法格式
os.rename(src, dst)
- src – 要修改的目录名
- dst – 修改后的目录名
renames()
方法用于递归重命名目录或文件。类似rename()。
语法格式
os.renames(old, new)
- old – 要重命名的目录
- new --文件或目录的新名字。甚至可以是包含在目录中的文件,或者完整的目录树。
示例代码
import os
os.rename("..\\test_dir", "..\\test_dir1") # 创建目录上一级目录
print(os.path.isdir("..\\test_dir")) # False
print(os.path.isdir("..\\test_dir1")) # True
os.renames("test_dirs\\test_dir", "test_dirs\\test_dir1") # 递归创建目录
print(os.path.isdir("test_dirs\\test_dir")) # False
print(os.path.isdir("test_dirs\\test_dir1")) # True
os.renames("Y:/02test/Python/02 进阶部分", "Y:/02test/Python/02进阶部分")
print(os.path.isdir("Y:/02test/Python/02 进阶部分")) # False
print(os.path.isdir("Y:/02test/Python/02进阶部分")) # True
获取目录
listdir()
方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。只支持在 Unix, Windows 下使用。
语法格式
os.listdir(path)
path – 需要列出的目录路径
返回指定路径下的文件和文件夹列表。
getcwd()
方法用于返回当前工作目录。
语法格式
os.getcwd()
返回当前进程的工作目录。
chdir()
方法用于改变当前工作目录到指定的路径。
语法格式
os.chdir(path)
path – 要切换到的新路径。
如果允许访问返回 True , 否则返回False。
示例代码
import os
dir_list = os.listdir() # 获取当前文件的路径,返回一个列表
print(dir_list) # 返回很长很长的列表
getcwd = os.getcwd() # 获取当前的工作路径
print(getcwd) # Y:\02test\Python\01 基础部分
os.chdir("..") # 返回上级目录
getcwd = os.getcwd() # 获取当前的工作路径
print(getcwd) # Y:\02test\Python
遍历目录
walk()
方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下。在Unix,Windows中有效。
语法结构
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
- top – 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。
- root 所指的是当前正在遍历的这个文件夹的本身的地址
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)
- topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。
- onerror – 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。
- followlinks – 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
示例代码
import os
list_result = os.walk(".", topdown=True, onerror=None, followlinks=False) # 获取当前目录 参数可写可不写
for root, dirs, files in list_result:
print(root)
print(dirs)
print(files)
文件操作
os.open()
方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777。
语法格式
os.open(file, flags[, mode]);
file – 要打开的文件
flags – 该参数可以是以下选项,多个使用 “|” 隔开:
选项 描述 os.O_RDONLY
以只读的方式打开 os.O_WRONLY
以只写的方式打开 os.O_RDWR
以读写的方式打开 os.O_NONBLOCK
打开时不阻塞 os.O_APPEND
以追加的方式打开 os.O_CREAT
创建并打开一个新文件 os.O_TRUNC
打开一个文件并截断它的长度为零(必须有写权限) os.O_EXCL
如果指定的文件存在,返回错误 os.O_SHLOCK
自动获取共享锁 os.O_EXLOCK
自动获取独立锁 os.O_DIRECT
消除或减少缓存效果 os.O_FSYNC
同步写入 os.O_NOFOLLOW
不追踪软链接 mode – 设置文件的权限(Windows基本没作用)
os.write()
方法用于写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。
语法格式
os.write(fd, str)
- fd – 文件描述符。
- str – 写入的字符串。
os.lseek()
方法用于设置文件描述符 fd 当前位置为 pos, how 方式修改。
语法结构
os.lseek(fd, pos, how)
- fd – 文件描述符。
- pos – 这是相对于给定的参数 how 在文件中的位置。。
- how – 文件内参考位置。SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始。
**注意:**如果在写入文件之后想要读取里面的内容,需要调整指针位置
os.read()
方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。在Unix,Windows中有效
语法结构
os.read(fd,n)
- fd – 文件描述符。
- n – 读取的字节。
os.fsync()
方法强制将文件描述符为fd的文件写入硬盘。Unix、Windows上可用。
语法结构
os.fsync(fd)
fd – 文件的描述符。
os.close()
方法用于关闭指定的文件描述符 fd。
语法结构
os.close(fd)
fd – 文件的描述符。
示例代码
""" -*- coding:uft-8 -*- author: 小甜 time:2020/5/26 """
import os
file = os.open("text.txt", os.O_CREAT | os.O_RDWR) # 打开文件
os.write(file, b"This is test") # 写入内容
os.fsync(file) # 将字符串刷新到硬盘上
os.lseek(file, 0, 0) # 将指针置为0
text = os.read(file, 100) # 读取文件
print(text) # b'This is test'
os.close(file) # 关闭文件
总结
明日学习计划
Python的time时间模块和random随机数模块
甜甜有话说
今天又是收获满满的一天,加油~
座右铭:不要在该奋斗的年纪选择安逸!!