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`` 访问该模块 ...
随机推荐
- [BZOJ 3132] 上帝造题的七分钟
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3132 [算法] 二维树状数组 [代码] #include<bits/stdc+ ...
- 【高德地图API】VS2012或者VS2013添加高德地图v2.1.1版本SDK失败
可能由于v2.1.1版本SDK可能是在Win8.1环境下编译[这里有许多的原因,系统升级,安装VS2013等等] 有童鞋在操作正常的情况下添加SDK失败,提示版本不兼容. 如下图: 编辑项目 *.c ...
- RegisterAttached 两种绑定方式
RegisterAttached 含义:使用指定的属性名称.属性类型和所有者类型注册附加属性 绑定方式:C#绑定.WPF绑定 例:需求DataViewModel为DataView的VM层,在DataV ...
- Android开发中的SQLite事务处理,即beginTransaction()方法
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTrans ...
- 涨知识III - 百度2016校园招聘——移动软件研发工程师
1.列关于线程调度的叙述中,错误的是(). 正确答案 :BE A调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会 B调用线程的yeild()方法,只会使与当前线程相同优先级的线 ...
- Hash二次探测
Hash的二次探测,当hash的长度为n:插入val,当Hash[val]不为0时,选择新地址newval = val +(-) 1*1,val+(-)2*2,val+(-)(n-1)*(n-1); ...
- SQL基本操作——declare if lese while
declare --第一种 declare @i int set @i= (select COUNT(*) from t8) select @i --第二种 declare @i int select ...
- easyui 使用笔记
http://www.easyui.info/archives/1435.html datagrid 服务端分页 服务端分页,高效,快捷!强力推荐! easyui的datagrid服务端分页,通过设置 ...
- 您厉害您赚得多:聪明投资者的聊天记录,雪球CEO的21条投资理念
3星|<您厉害您赚得多>:雪球创始人的投资理念.原则.技巧,及其在雪球上跟一些用户的互动的内容 作者是雪球创始人.CEO,全书基本是作者的一些投资理念+作者在雪球上跟用户的互动的内容,还有 ...
- makefile 与 make
所要完成的Makefile 文件描述了整个工程的编译.连接等规则.其中包括:工程中的哪些源文件需要编译以及如何编译.需要创建那些库文件以及如何创建这些库文件.如何最后产生我们想要的可执行文件.尽管看起 ...