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. # [libx264 @ 00000275eb57fec0] height not divisible by 2 (520x325)

    # [libx264 @ 00000275eb57fec0] height not divisible by 2 (520x325)

  2. ubuntu 查看进程,查看服务

    jiqing@Ubuntu:~$ sudo netstat -anpl | grep :3306 tcp6 0 0 :::3306 :::* LISTEN 1532/mysqld jiqing@Ubu ...

  3. WebView播放H5课件时,锁屏解锁后,页面重新绘制的问题

    难题描述:H5页面播放 ,锁屏,解锁后,重新加载了页面,三星不会出现(onpause onstop ,onresume),但在小米.魅族会调用 onpause onstop ondestroy,onr ...

  4. centos6.4 ssh免密码登陆(只需三个步骤)

    学习Hadoop的时候,用到的.这里作为记录. 以下是最简洁的方式: 4台虚拟机: 用户:root.hadoop hostname 分别是:Master.Hadoop.Slave1.Hadoop.Sl ...

  5. ecshop的一些东西,来看看

    \includes\lib_commom.php =>公用函数库 \includes\lib_main.php =>前台公用函数库 \includes\lib_init.php => ...

  6. poj1988Cute Stacking

    题目大意:有几个stack,初始里面有一个cube.支持两种操作:1.move x y: 将x所在的stack移动到y所在stack的顶部.2.count x:数在x所在stack中,在x之下的cub ...

  7. JavaScript中什么是包装对象?

    存取字符串.数字或布尔值的属性时,创建的临时对象称为包装对象.包装对象只是偶尔用来区分字符串值和字符串对象.数字和数值对象以及布尔值和布尔对象.由于字符串.数字和布尔值的属性都是只读的,并且不能给它们 ...

  8. “国家队爷”杯液体战争AI比赛!!__SymenYang

    原帖 这两天一直在搞这个AI,提供的样例更本不是我的风格啊,看不懂更不会改... 所以我自己写了一个AI的平台,现在在不断的修改AI的策略,smart样例还是很容易过的,让line的行走速度变慢一点到 ...

  9. 关于java.util.properties的随笔

    public class Propertiesextends Hashtable<Object,Object> Properties 类表示了一个持久的属性集.Properties 可保存 ...

  10. C++中 list与vector的区别

    引用http://www.cnblogs.com/shijingjing07/p/5587719.html C++ vector和list的区别 1.vector数据结构vector和数组类似,拥有一 ...