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中os下哪个_ubuntu