35

Python内置OS模块用法详解

 3 years ago
source link: http://mp.weixin.qq.com/s?__biz=MzI1MTE2ODg4MA%3D%3D&%3Bmid=2650073154&%3Bidx=1&%3Bsn=89f455c7e3b8b8d7a095c95d59108286
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

大家好,从今天起早起Python将持续更新由小甜同学从 初学者 的角度学习Python的笔记, 其特 点就是 全文大多由新手易理解的 代码与注释及动态演示 刚入门的读者千万不要错过!

6jA7nab.jpg!web

为了配合 Python办公自动化 系列文章,本文带来的是 偷学Python第二十七天: Python内置OS模块的详细用法,其他内容将在近期更新完毕,本文目录如下

ZZ77Nzu.png!web

目录操作

创建目录

mkdir()   方法用于以数字权限模式当前目录下创建目录。默认的模式为 0777 (八进制),语法格式 如下

os.mkdir(path[, mode])
  • path – 要创建的目录

  • 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)

示例代码

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)

示例代码

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 下使用。path为需要列出的目录路径

os.listdir(path)

getcwd()   方法用于返回当前工作目录。

os.getcwd()

chdir()  方法用于改变当前工作目录到指定的路径。

os.chdir(path)

示例代码

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]]])

q2A7viq.png!web

示例代码

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]);

vyaquuf.png!web

os.write()   方法用于写入字符串到文件描述符 fd 中. 返回实际写入的字符串长度。

os.write(fd, str)

os.lseek()   方法用于设置文件描述符 fd 当前位置为 pos, how 方式修改。

os.lseek(fd, pos, how)

os.read()   方法用于从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。在Unix,Windows中有效

os.read(fd,n)

os.fsync()   方法强制将文件描述符为fd的文件写入硬盘。Unix、Windows上可用。

os.fsync(fd)

os.close()   方法用于关闭指定的文件描述符 fd。

os.close(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) # 关闭文件

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK