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`` 访问该模块 ...
随机推荐
- bzoj2131: 免费的馅饼
首先我们很容易看出是一个DP 然后容易看出是数据结构优化DP 但是这个限制条件有点鬼畜: abs(p[i]-p[j])/2<=(t[i]-t[j]) p[i]>p[j] -> t[i ...
- qtree4
https://zybuluo.com/ysner/note/1236834 题面 给出一棵边带权的节点数量为\(n\)的树,初始树上所有节点都是白色.有两种操作: 改变节点\(x\)的颜色,即白变黑 ...
- JSP-Runoob:JSP 国际化
ylbtech-JSP-Runoob:JSP 国际化 1.返回顶部 1. JSP 国际化 在开始前,需要解释几个重要的概念: 国际化(i18n):表明一个页面根据访问者的语言或国家来呈现不同的翻译版本 ...
- PCB Genesis脚本 C#调用Javascript
曾经用node.js测试写Genesis脚本失败了,这次借助开发PCB规则引擎的机会(基于JS V8引擎与.net深度交互性), 验证一下Javascript是否可用于写Genesis脚本. 一.测试 ...
- PCB 围绕CAM自动化,打造PCB规则引擎
AutoCAM自动化平台,前端管理订单,而后端执行任务,前端UIl界面有板厚,铜厚,板材,表面处理,层数等信息,而这些信息并不是后端最终所需要的信息后.拿钻孔补偿来说,后端需要的是钻孔补偿值,但前端并 ...
- E20171016-mk
chaos n. 混乱,紊乱; (天地未出现的) 浑沌世界; 〈古〉无底深渊; 一团糟;
- codevs1225八数码难题(搜索·)
1225 八数码难题 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description Yours和zero在研究A*启 ...
- [Swift通天遁地]七、数据与安全-(7)创建文件浏览器:以可视化的方式浏览沙箱文件
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- SRM-697-DIV2
Div2 Medium: DivisibleSetDiv2 Problem Statement You are given a vector <int> b containing ...
- Elasticsearch之sense插件安装之后的浏览详解
前提博客是 Elasticsearch之sense插件的安装(图文详解) 立马,可以看到 http://192.168.80.145:5601/app/sense 以后更新