os模块除了提供使用操作系统功能和访问文件系统的简便方法之外,还提供了大量文件与文件夹操作的方法,如下表所示。

方法 功能说明
access(path,mode) 按照 mode 指定的权限访问文件
chdir(path) 把 path 设置为当前工作目录
chmod(path,mode,*,dir_fd=None,follow_symlinks=True) 改变文件的访问权限
extsep 当前操作系统所使用的文件扩展名分隔符
fstat(path) 返回打开的文件的所有属性
get_exec_path() 返回可执行文件的搜索路径
getcwd() 返回当前的工作目录
listdir(path) 返回path目录下的文件和目录列表
mkdir(path[,mode=0777]) 创建目录
makedirs(path1/path2/...,mode=551) 创建多级目录
open(path,flags,mode=0o777,*,dir_fd=None) 按照mode指定的权限打开文件,默认权限为可读、可写、可执行
rmdir(path) 删除目录,目录中不能有文件或子文件夹
remove(path) 删除指定的文件
removedirs(path1/path2...) 删除多级目录,目录中不能有文件
rename(src,dst) 重命名文件或目录,可实现文件的移动
scandir(path='.') 返回包含指定文件夹中所有DirEntry对象的迭代对象
sep 当前操作系统所使用的路径分隔符
startfile(filepath[,operation]) 使用关联的应用程序打开指定文件或启动指定应用程序
stat(path) 返回文件的所有属性
truncate(path,length) 将文件截断,只保留指定的长度
walk(top,topdown=True,onerror=None) 遍历目录树,该方法返回一个元组,包含3个元素:所有路径名、所有目录列表与文件列表
write(fd,data) 将 bytes 对象 data 写入文件fd

  os.path模块提供了大量用于路径判断、切分、连接以及文件夹遍历的方法,如下表所示。

方法 功能说明
abspath(path) 返回给定路径的绝对路径
basename(path) 返回指定路径的最后一个组成部分
commonpath(paths) 返回戈丁的多个路径的最长公共路径
commonprefix(paths) 返回给定的多个路径的最长公共前缀
dirname(p) 返回给定路径的文件夹部分
exists(path) 判断文件是否存在
getatime(filename) 返回文件的最后访问时间
getctime(filename) 返回文件的最后创建时间
getmtime(filename) 返回文件的最后修改时间
getsize(filename) 返回文件的大小
isabs(path) 判断path是否为绝对路径
isdir(path) 判断path是否为文件夹
isfile(path) 判断path是否为文件
join(path,* paths) 连接两个或多个path
split(path) 对绝对路径进行分割,以列表形式返回
splitest(path) 从路径中分隔文件的扩展名
splitdrive(path) 从路径中分隔出驱动器的名称

  shutil模块也提供了大量的方法支持文件和文件夹的操作,常用方法如下表所示。

方法 功能说明
copyfile(src,dst) 复制文件
copytree(src,dst) 递归复制文件夹
disk_usage(path) 查看磁盘使用情况
move(src,dst) 移动文件或递归移动文件夹
rmtree(path) 递归删除文件夹
make_archive(base_name,format,root_dir=None,base_dir=None) 创建tar或zip格式的压缩文件
unpack_archive(filename,extract_dir = None,format = None) 解压缩文件

  下面通过几个示例来演示os、os.path 以及 shutil 模块的基本用法。

 import os
import os.path as op print(op.basename(r'C:\windows\notepad.exe')) #获取路径的最后一个组成部分
#notepad.exe print(op.exists(r'test1.txt')) #测试文件是否存在
#notepad.exe #----------------------------------------------
#os.rename(r'C:\test1.txt',r'C:\test2.txt') #源文件不存在,重命名失败
'''
Traceback (most recent call last):
File "C:/Users/dddd/AppData/Local/Programs/Python/Python35/test1.py", line 10, in <module>
os.rename(r'C:\test1.txt',r'C:\test2.txt') #源文件不存在,重命名失败
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'C:\\test1.txt' -> 'C:\\test2.txt'
'''
#---------------------------------------------- #os.rename(r'C:\Users\dddd\AppData\Local\Programs\Python\Python35\infomation.txt','C:\\infomation.txt') #os.rename() 可实现文件的改名和移动
#这里区分是移动还是改名就看是不是在同一个路径下,是则为改名,否则为移动 print(op.exists('C:\\infomation.txt'))
#True #返回路径的文件夹名
path = r'D:\mypython_exp\new_test.txt'
print(os.path.dirname(path)) #D:\mypython_exp #返回文件名
print(os.path.basename(path)) #new_test.txt #切分文件路径和文件名
print(os.path.split(path)) #('D:\\mypython_exp', 'new_test.txt') print(os.path.splitdrive(path)) #('D:', '\\mypython_exp\\new_test.txt') #切分文件拓展名
print(os.path.splitext(path)) #('D:\\mypython_exp\\new_test', '.txt') #获取当前工作目录下的 拓展名为.py的文件
print([fname for fname in os.listdir(os.getcwd()) if os.path.isfile(fname) and fname.endswith('.py')])
#['BinaryTree.py', 'demo.py', 'demo_new.py', 'MyArray.py', 'myQueue.py', 'simNumpyArray.py', 'Stack.py', 'test.py', 'test1.py'] #返回当前工作目录
print(os.getcwd()) #C:\Users\...\Programs\Python\Python35 #在当前工作目录下创建子目录
#print(os.mkdir(os.getcwd() + r'\pyfile')) #把当前工作目录切换到pyfile目录下
os.chdir(os.getcwd() + r'\pyfile') #返回\pyfile目录下的文件
print(os.listdir(os.getcwd())) #因为这个目录刚创建,还没有文件,所以返回空列表 [] #当前目录还可以用 . 表示 上级目录可以用 .. 表示,,这是相对路径
print(os.listdir('.')) #[]
print(os.listdir('..')) #['.idea', 'BinaryTree.py', ...,] #在 pyfile目录下再创建一个目录
#os.mkdir('aa') #删除刚才创建的目录
#os.rmdir('aa') print(os.path.commonpath([r'C:\windows\notepad.exe',r'C:\windows\system'])) #C:\windows
print(os.path.commonprefix([r'a\b\c\d',r'a\b\c\e'])) #a\b\c\
 import shutil

 #shutil.copyfile(r'C:\infomation.txt','C:\\Users\\dddd\\AppData\\Local\\Programs\\Python\\Python35\infomation.txt')  #OK了,复制过来了

 #将某个文件夹及该文件夹中所有文件压缩至 当前目录下的 a.zip
#shutil.make_archive('.\\a','zip','.','a') #OK了,压缩成功了。 #将刚才的压缩文件解压至 .\aa文件夹下
shutil.unpack_archive('.\a.zip','.\aa')

6.4.1 标准库 os、os.path 与 shutil 简介的更多相关文章

  1. python常用标准库(os系统模块、shutil文件操作模块)

    常用的标准库 系统模块 import os 系统模块用于对系统进行操作. 常用方法 os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作.文件的删除创建等详细资料可以参考官方文 ...

  2. 『Golang』—— 标准库之 os

    Golang 的 os 库基本承袭 Unix 下 C 语言的用法 path 库: func Base(path string) string //取文件名,不含目录部分 func Dir(path s ...

  3. Python标准库之os模块

    1.删除和重命名文件 import os import string def replace(file, search_for, replace_with): # replace strings in ...

  4. go标准库的学习-path/filepath

    参考https://studygolang.com/pkgdoc 标准库path中有的该path/filepath库中都有,所以一般都使用path/filepath 导入方式: import &quo ...

  5. C++标准库类型vector及迭代器iterator简介

    Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...

  6. python3.5学习第二章(1)标准库,bytes

    一.输出python库的路径: 1.sys标准库 import sysprint(sys.path) 结果: 'E:\\python练习\\python35学习\\Day2', 'E:\\python ...

  7. 简明Python3教程 16.标准库

    简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...

  8. 常用的 Python 标准库都有哪些?

    标准库:os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列. 第三方库:django 和 f ...

  9. python标准库介绍——2 os.path模块详解

    == os.path 模块 == ``os.path`` 模块包含了各种处理长文件名(路径名)的函数. 先导入 (import) ``os`` 模块, 然后就可以以 ``os.path`` 访问该模块 ...

随机推荐

  1. 44. Ext信息提示对话框

    转自:https://www.cnblogs.com/glsqh/p/5920500.html Ext.window.MessageBox是一个工具类,他继承自Ext.window.Windoe对象, ...

  2. Android 数据库

    官方文档:https://developer.android.com/training/basics/data-storage/databases.html#WriteDbRow 原帖:http:// ...

  3. 浅析SpringDataJpa继承结构

    一.SpringDataJpa的含义: SpringDataJpa: 是Spring基于ORM框架.JPA规范封装的一套JPA应用框架,是SpringData中的一个子模块,可让开发者用极简的代码即可 ...

  4. Akka源码分析-Actor创建(续)

    在上一遍博客中,我们已经分析了actor创建的大致过程,但只是涉及到了Dipatcher/Mailbox/ActorCell/InternalActorRef等对象的创建,并没有介绍我们自定义的继承A ...

  5. akka设计模式系列-消息模型

    通过前面的文章我们总结了几个常见的actor设计模式,但此处不得不提前介绍一下在Akka中消息的设计模式.随着对Akka的使用,我们会发现,使用Akka设计系统其实就是面向消息编程.actor之间消息 ...

  6. 1.1输出“hello,world”

    #include<iostream> using namespace std; int main() { cout<<"Hello, World!"< ...

  7. Patch 21352635 - Database Patch Set Update 11.2.0.4.8

    一.CPU和PSU 近日,将数据库从9.2.0.6升级到11.2.0.4后,发现11.2.0.4通过DBLINK访问其他的9i库时发生ORA-02072错误,通过Google找到解决方案,即升级到PS ...

  8. 347 Top K Frequent Elements 前K个高频元素

    给定一个非空的整数数组,返回其中出现频率前 k 高的元素.例如,给定数组 [1,1,1,2,2,3] , 和 k = 2,返回 [1,2].注意:    你可以假设给定的 k 总是合理的,1 ≤ k ...

  9. 参加2016华为codecraft编程精英挑战赛后感

    2016年4月参加了华为的软件比赛. 关于比赛:给了一道图论的np-hard问题.刚开始完全不知道怎么入手,请教过师兄,自己也琢磨过,没有什么万全的解决方法.注意,这里说的是万全的办法.本科搞算法时候 ...

  10. 316 Remove Duplicate Letters 去除重复字母

    给定一个仅包含小写字母的字符串,去除重复的字母使得所有字母出现且仅出现一次.你必须保证返回结果是所有可能结果中的以字典排序的最短结果.例如:给定 "bcabc"返回 "a ...