进阶第四课 Python模块之os
os模块,一起来看下都有哪些常用的方法,也就是有哪些函数或者功能。
首先了解一下os的组成
>>> import os >>> dir(os) ['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']
os模块拥有非常多的方法(也就是函数)。
1、os.getcwd()
>>> import os >>> os.getcwd() 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36'
返回了当前.py保存的目录。这里需要注意的是,返回值使用的是双斜线。
2、os.chdir()
改变本机.py保存的路径。
3、os.curdir
返回当前目录。
>>> import os >>> os.curdir '.'
4、os.pardir
返回当前目录的上一层目录。
>>> os.pardir '..'
5、os.makedirs()
新建多层文件夹。多层文件夹名之间使用\\隔开。
os.makedirs('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs\\osmakedirs_1\\osmakedirs_2')
我在python的安装目录下,用os.makedirs通过输入路径和新的文件夹名,成功新建了osmakeidirs\osmakedirs_1\osmakedirs_2这个三级文件夹。当然,使用os.makedirs也可以只建立单层文件夹。
6、os.mkdir()
新建单层文件夹。
>>> os.mkdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs')
这个就只能新建单层文件夹啦,如果输入多层文件夹参数,会报错,大家可以自己试一下。
7、os.listdir()
以列表的方式,罗列出指定文件夹下所有文件和子目录,包括隐藏文件。看示例:
>>> import os >>> os.getcwd() 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36' >>> os.listdir(os.getcwd()) ['5code.py', 'breaktest.py', 'code5.py', 'day03zy02.py', 'dayin1.py', 'dayinsanjiao.py', 'dayinsanjiaodaozhi.py', 'DLLs', 'Doc', 'hello.py', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'python3.dll', 'python36.dll', 'pythonw.exe', 'Scripts', 'selenium', 'suijima.txt', 'tcl', 'test.py', 'test100_25.py', 'test100_26.py', 'test100_27buhuizuo.py', 'test100_28.py', 'test100_29.py', 'test100_30.py', 'test100_30_02.py', 'test100_74.py', 'test100_76.py', 'test100_77.py', 'test100_78.py', 'test100_79.py', 'test100_80.py', 'test100_80_2.py', 'test100_81.py', 'test100_82buhuizuo.py', 'test100_83.py', 'test100——81.py', 'test101.py', 'Tools', 'vcruntime140.dll', '__pycache__']
8、os.rmdir()
删除一层空白文件夹。如果指定的文件夹不是空的,就会报错。
python安装目录下,我新建了2个文件夹:osmakedirs(空,不包含任何文件)和osmakedirs_2(非空,包含一个txt)。针对这2个文件夹,我们试一下:
>>> os.rmdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs') >>> os.rmdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs_2') Traceback (most recent call last):File "<pyshell#10>", line 1, in <module>os.rmdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs_2') OSError: [WinError 145] 目录不是空的。: 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs_2'
对于空白文件夹,执行后指定的空文件夹被删除;而非空的文件夹一来没有被删除,二来会报错。
9、os.remove()
删除一个文件
首先在Python安装目录新建一个remove.txt,然后执行
>>> os.remove('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\remove.txt')
执行后,指定的remove.txt被删除。
10、os.stat()
显示指定的文件夹和文件的信息。
>>> os.stat('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\randomcode200.py') os.stat_result(st_mode=33206, st_ino=14073748835640734, st_dev=2651436040, st_nlink=1, st_uid=0, st_gid=0, st_size=836, st_atime=1523148327, st_mtime=1523149347, st_ctime=1523148327) >>> os.stat('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\randomcode200.txt') os.stat_result(st_mode=33206, st_ino=26740122787620629, st_dev=2651436040, st_nlink=1, st_uid=0, st_gid=0, st_size=520, st_atime=1523148599, st_mtime=1523148706, st_ctime=1523148599)
返回结果中,各个字节的含义大家自行百度吧。
11、os.rename(a,b)
重命名文件或者指定的文件夹。a是原名,b是新名。
>>> os.rename('C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/randomcode300.py','C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/randomcode800.py') >>> os.rename('C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/osmakedirs','C:/Users/Administrator/AppData/Local/Programs/Python/Python36-32/osmakedirs200')
既可以修改文件名,也可以修改文件夹的名字。
12、os.name
显示本机使用的操作系统名。
>>> os.name 'nt'
当前电脑室win10。
13、os.removedirs()
删除空文件夹,并到上一级文件夹同时检查该文件夹是否为空,再到上一层文件夹并检查是否为空,往复。。
多层文件夹名之间使用\\隔开。
首先我在Python的安装目录下,手动建立了一个三级文件夹:osmakedirs200--osmakedirs300--osmakedirs400,除了空文件夹,没有其他文件,osmakedirs400文件夹为空。
>>> os.removedirs('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\osmakedirs200\\osmakedirs300\\osmakedirs400')
执行后,上面手动新建的3级文件夹被删除。但是,由于这个文件夹C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32不为空,就没有继续删除。
14、os.sep、os.extsep、os.pathsep和os.linesep
14.1 os.sep显示本机操作系统的路径分隔符,其中windows下的分隔符是\\,而Linux的分隔符是/。
>>> os.sep '\\'
14.2 os.extsep
>>> os.extsep '.'
14.3 os.pathsep
>>> os.pathsep ';'
14.4 os.linesep
>>> os.linesep '\r\n'
os.path下还有数目众多的方法:
>>> dir(os.path) ['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_get_bothseps', '_getfinalpathname', '_getfullpathname', '_getvolumepathname', 'abspath', 'altsep', 'basename', 'commonpath', 'commonprefix', 'curdir', 'defpath', 'devnull', 'dirname', 'exists', 'expanduser', 'expandvars', 'extsep', 'genericpath', 'getatime', 'getctime', 'getmtime', 'getsize', 'isabs', 'isdir', 'isfile', 'islink', 'ismount', 'join', 'lexists', 'normcase', 'normpath', 'os', 'pardir', 'pathsep', 'realpath', 'relpath', 'samefile', 'sameopenfile', 'samestat', 'sep', 'split', 'splitdrive', 'splitext', 'splitunc', 'stat', 'supports_unicode_filenames', 'sys']
找几个说明一下:
15、os.path.split(path)
返回由目录和文件名组成的元祖。
若路径字符串最后一个字符是\,则只有文件夹部分有值,文件名为空值,因为path只给定了目录而未给出文件名;
>>> os.path.split('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\') ('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36', '')
若路径字符串中均无\,则只有文件名部分有值,文件夹为空值,因为path只给定了文件名而未给出目录;
>>> os.path.split('dayin1.py') ('', 'dayin1.py')
若路径字符串有\,且不在最后,则文件夹和文件名均有值,且返回的文件夹的结尾不包含\。
>>> os.path.split('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') ('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36', 'dayin1.py')
16、os.path.dirname(path)
返回path中的文件夹部分,结果不包含'\'
>>> os.path.dirname('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36' >>> os.path.dirname('.') '' >>> os.path.dirname('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python'>>> os.path.dirname('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python') 'C:\\Users\\Tom\\AppData\\Local\\Programs'
17、os.path.basename(path)
返回path最后的文件名。如果path中最后是一个文件夹且有\\,那就会返回'';如果path中最后是一个文件夹且没有\\,那就会返回path最后的文件夹名。
>>> os.path.basename('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') 'dayin1.py' >>> os.path.basename('.') '.' >>> os.path.basename('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\') '' >>> os.path.basename('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python') 'Python'
18、os.path.exists(path)
若文件或文件夹存在就返回Ture,否则返回False。
>>> os.path.exists('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\') True >>> os.path.exists('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python') True >>> os.path.exists('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') True >>> os.path.exists('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin100.py') False
19、os.path.isabs(path)
如果path是绝对路径就返回Ture,否则返回False。
>>> os.path.isabs('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\') True >>> os.path.isabs('Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\') False
20、os.path.isfile(path)
如果path是一个已有的文件就返回Ture,否则返回False。
>>> os.path.isfile('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\randomcode200.py') True
21、os.path.isdir(path)
如果path是一个已有的文件夹就返回Ture,否则返回False。
>>> os.path.isdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32\\') True >>> os.path.isdir('C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32') True
22、os.path.join(path1[,path2[,....]])
与os.path.split正好相反,这是用于拼接路径的,比+更好用。将path进行组合,若其中有绝对路径,则第一个参数的path将被删除。
>>> os.path.join('C:\\Users\\Tom\\AppData','Local') 'C:\\Users\\Tom\\AppData\\Local' >>> os.path.join('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36','dayin1.py') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py' >>> os.path.join('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\Doc','C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\Lib') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\Lib'
23、os.path.getatime(path)
返回path指定的目录或者文件最后一次的存取时间戳。
>>> os.path.getatime('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') 1521367301.137745 >>> import time >>> a=time.localtime(1521367301.137745) >>> b=time.strftime("%Y-%m-%d %H:%M:%S",a) >>> b '2018-03-18 18:01:41'
先找到dayin1.py这个文件最后一次的存取时间戳,然后导入time模块。再通过time模块中的2个函数,localtime和strftime把时间戳转换为我们熟悉的日期和时间格式。
24、os.path.getmtime(path)
返回path指定的目录或者文件最后一次修改的时间戳。
>>> os.path.getmtime('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\') 1523058336.9317653 >>> c=time.localtime(1523058336.9317653) >>> d=time.strftime("%Y-%m-%d %H:%M:%S",c) >>> d '2018-04-07 07:45:36'
道理同上。
25、os.path.getctime(path)
文件或文件夹创建的时间戳。
>>> os.path.getctime('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\') 1520505028.9450653 >>> e=time.localtime(1520505028.9450653) >>> f=time.strftime("%Y-%m-%d %H:%M:%S",e) >>> f '2018-03-08 18:30:28'
26、os.path.abspath(path)
返回path的绝对路径。
>>> os.path.abspath('.') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36'
>>> os.path.abspath('..')
'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python'
27、os.path.getsize(path)
返回文件或文件夹的大小,单位是字节。网上查了下,有人说path如果是文件夹,会返回0,但是我测试的结果是这样的。。。如果知道原因,请回复我。
>>> os.path.getsize('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\dayin1.py') 98 >>> os.path.getsize('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\') 12288 >>> os.path.getsize('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36') 12288 >>> os.path.getsize('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\Doc') 0 >>> os.path.getsize('C:\\Users\\Tom\\AppData\\Local') 12288 >>> os.path.getsize('C:\\Users\\Tom\\AppData') 0
示例:
网上找到一个很好的例子,与大家共同学习。
在自动化测试过程中,常常需要发送邮件,将最新的测试报告文档发送给相关人员查看,这是就需要查找最新文件的功能。
举例:查找文件夹下最新的文件。
>>> import os >>> def new_file(test_dir):lists=os.listdir(test_dir)lists.sort(key=lambda filename:os.path.getmtime(filename),reverse=True)file_path=os.path.join(test_dir,lists[0])return file_path>>> new_file('C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\') 'C:\\Users\\Tom\\AppData\\Local\\Programs\\Python\\Python36\\suijima.txt'
转载于:https://www.cnblogs.com/tuobeiwoniu/p/8667326.html
进阶第四课 Python模块之os相关推荐
- 进阶第十一课 Python模块之random
random就是随机的意思,在Python中就是按照指定范围和规则,做随机取数的工作. 看下例子: >>> import random >>> random.ran ...
- 潭州课堂25班:Ph201805201 python 模块json,os 第六课 (课堂笔记)
json 模块 import jsondata = {'name':'aa','age':18,'lis':[1,3,4],'tupe':(4,5,6),'None':None } j = json. ...
- 第四课.Python函数(一)
目录 函数的定义 注释增强与函数对象 栈与栈帧(Stack Frame) 函数的参数 偏函数 LEGB访问规则 函数的定义 大一学C语言时,老师说函数就是一个功能,后来学习C#后,老师却把函数又叫做方 ...
- python模块学习——os
网上转载 os模块在我们操作文件和文件目录时使用的,包含了很多操作文件和目录的函数,包含了普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要 ...
- 四、Python第四课——Python中列表及其操作(增删改查)
目录 一.Python中的列表 1.列表的定义和赋值 2.列表的使用 二.列表的"增删改查" 1.列表中元素的增加 A.在列表尾添加元素 B.在列表中插入元素 2.列表中" ...
- Android工程师进阶第四课 jmm内存模型和juc多线程基础
第07讲:Java 内存模型与线程 本课时我们将进入 Java 内存模型的学习. Java 内存模型一词翻译自 Java Memory Model,简称 JMM,它所描述的是多线程并发.CPU 缓存等 ...
- 【Python】学习笔记总结4(Python模块)
文章目录 四.Python模块 1.import导入模块 2.from...import导入模块 3.as 给模块取别名 4. os模块 5.自行编写模块 四.Python模块 1.import导入模 ...
- 【转】python模块分析之collections(六)
[转]python模块分析之collections(六) collections是Python内建的一个集合模块,提供了许多有用的集合类. 系列文章 python模块分析之random(一) pyth ...
- Python学习笔记四(Python OS模块)
Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/libra ...
最新文章
- 基于Centos7的autobahn-python+crossbar的环境搭建
- 备忘:C语言void *
- J2me Canvas
- SDRAM芯片初始化、行有效、列读写时序(高手进阶,终极内存技术指南——完整/进阶版) ——本文为转载...
- 从零点五开始用Unity做半个2D战棋小游戏(十)
- Mac-安装Homebrew报错error: could not lock config file .git/config:
- remaining connection slots are reserved for non-replication superuser connections
- 北大朱占星:顶级会议疯狂投稿下的AI现状 | 专栏
- axios 上传文件_聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传...
- web前端实训day06——学子商城登录页面实现
- 信息安全技术及应用 系统安全防护技术
- GPS从入门到放弃(十六)--- 卫星时钟误差和卫星星历误差
- SQL数据库语句大全
- 工厂管理口诀,请转给每一个员工背下来!
- 关于三星Galaxy S8最好的(和最坏的)事情
- 一个汉字等于多少个varchar2
- Vibrant Ink Theme for IntelliJ IDEA
- js随机跳转域名_从代码角度看各类子域名收集工具
- 三次握手与四次挥手简介
- 51单片机——红外遥控 C语言入门编程
热门文章
- python学习手册视频教程-Python学习精品教程,视频书籍打包下载
- python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)
- 国内哪里培训python比较好-python培训机构怎么选择?哪家比较靠谱?
- python用raise手动抛出异常
- 3_深度学习中显卡的使用和显存的分配(20181213)
- vmware下/mnt/hgfs下为空的问题
- [ROS] Chinese MOOC || Chapter-2.4 Metapackage
- 使用字符流 创建文件 写入文件 复制文件
- Centos7常用操作
- A02 创建实验环境快照