6.4.1 标准库 os、os.path 与 shutil 简介
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 简介的更多相关文章
- python常用标准库(os系统模块、shutil文件操作模块)
常用的标准库 系统模块 import os 系统模块用于对系统进行操作. 常用方法 os模块的常用方法有数十种之多,本文中只选出最常用的几种,其余的还有权限操作.文件的删除创建等详细资料可以参考官方文 ...
- 『Golang』—— 标准库之 os
Golang 的 os 库基本承袭 Unix 下 C 语言的用法 path 库: func Base(path string) string //取文件名,不含目录部分 func Dir(path s ...
- Python标准库之os模块
1.删除和重命名文件 import os import string def replace(file, search_for, replace_with): # replace strings in ...
- go标准库的学习-path/filepath
参考https://studygolang.com/pkgdoc 标准库path中有的该path/filepath库中都有,所以一般都使用path/filepath 导入方式: import &quo ...
- C++标准库类型vector及迭代器iterator简介
Vector是C++标准库类型,称为容器,一个容器中的所有对象必须是同一种类型的.与数组相比,其最大的优点就是动态增长.Vector是一个类模板,并不是数据类型,而vector<int>和 ...
- python3.5学习第二章(1)标准库,bytes
一.输出python库的路径: 1.sys标准库 import sysprint(sys.path) 结果: 'E:\\python练习\\python35学习\\Day2', 'E:\\python ...
- 简明Python3教程 16.标准库
简介 python标准库作为python标准安装的一部分,其自身包含数量庞大的实用模块, 因此熟悉python标准库非常重要,因为很多问题都能利用python标准库快速解决. 下面我们将研究标准库中的 ...
- 常用的 Python 标准库都有哪些?
标准库:os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列. 第三方库:django 和 f ...
- python标准库介绍——2 os.path模块详解
== os.path 模块 == ``os.path`` 模块包含了各种处理长文件名(路径名)的函数. 先导入 (import) ``os`` 模块, 然后就可以以 ``os.path`` 访问该模块 ...
随机推荐
- # [libx264 @ 00000275eb57fec0] height not divisible by 2 (520x325)
# [libx264 @ 00000275eb57fec0] height not divisible by 2 (520x325)
- ubuntu 查看进程,查看服务
jiqing@Ubuntu:~$ sudo netstat -anpl | grep :3306 tcp6 0 0 :::3306 :::* LISTEN 1532/mysqld jiqing@Ubu ...
- WebView播放H5课件时,锁屏解锁后,页面重新绘制的问题
难题描述:H5页面播放 ,锁屏,解锁后,重新加载了页面,三星不会出现(onpause onstop ,onresume),但在小米.魅族会调用 onpause onstop ondestroy,onr ...
- centos6.4 ssh免密码登陆(只需三个步骤)
学习Hadoop的时候,用到的.这里作为记录. 以下是最简洁的方式: 4台虚拟机: 用户:root.hadoop hostname 分别是:Master.Hadoop.Slave1.Hadoop.Sl ...
- ecshop的一些东西,来看看
\includes\lib_commom.php =>公用函数库 \includes\lib_main.php =>前台公用函数库 \includes\lib_init.php => ...
- poj1988Cute Stacking
题目大意:有几个stack,初始里面有一个cube.支持两种操作:1.move x y: 将x所在的stack移动到y所在stack的顶部.2.count x:数在x所在stack中,在x之下的cub ...
- JavaScript中什么是包装对象?
存取字符串.数字或布尔值的属性时,创建的临时对象称为包装对象.包装对象只是偶尔用来区分字符串值和字符串对象.数字和数值对象以及布尔值和布尔对象.由于字符串.数字和布尔值的属性都是只读的,并且不能给它们 ...
- “国家队爷”杯液体战争AI比赛!!__SymenYang
原帖 这两天一直在搞这个AI,提供的样例更本不是我的风格啊,看不懂更不会改... 所以我自己写了一个AI的平台,现在在不断的修改AI的策略,smart样例还是很容易过的,让line的行走速度变慢一点到 ...
- 关于java.util.properties的随笔
public class Propertiesextends Hashtable<Object,Object> Properties 类表示了一个持久的属性集.Properties 可保存 ...
- C++中 list与vector的区别
引用http://www.cnblogs.com/shijingjing07/p/5587719.html C++ vector和list的区别 1.vector数据结构vector和数组类似,拥有一 ...