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相关推荐

  1. 进阶第十一课 Python模块之random

    random就是随机的意思,在Python中就是按照指定范围和规则,做随机取数的工作. 看下例子: >>> import random >>> random.ran ...

  2. 潭州课堂25班:Ph201805201 python 模块json,os 第六课 (课堂笔记)

    json 模块 import jsondata = {'name':'aa','age':18,'lis':[1,3,4],'tupe':(4,5,6),'None':None } j = json. ...

  3. 第四课.Python函数(一)

    目录 函数的定义 注释增强与函数对象 栈与栈帧(Stack Frame) 函数的参数 偏函数 LEGB访问规则 函数的定义 大一学C语言时,老师说函数就是一个功能,后来学习C#后,老师却把函数又叫做方 ...

  4. python模块学习——os

    网上转载 os模块在我们操作文件和文件目录时使用的,包含了很多操作文件和目录的函数,包含了普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.即它允许一个程序在编写后不需要 ...

  5. 四、Python第四课——Python中列表及其操作(增删改查)

    目录 一.Python中的列表 1.列表的定义和赋值 2.列表的使用 二.列表的"增删改查" 1.列表中元素的增加 A.在列表尾添加元素 B.在列表中插入元素 2.列表中" ...

  6. Android工程师进阶第四课 jmm内存模型和juc多线程基础

    第07讲:Java 内存模型与线程 本课时我们将进入 Java 内存模型的学习. Java 内存模型一词翻译自 Java Memory Model,简称 JMM,它所描述的是多线程并发.CPU 缓存等 ...

  7. 【Python】学习笔记总结4(Python模块)

    文章目录 四.Python模块 1.import导入模块 2.from...import导入模块 3.as 给模块取别名 4. os模块 5.自行编写模块 四.Python模块 1.import导入模 ...

  8. 【转】python模块分析之collections(六)

    [转]python模块分析之collections(六) collections是Python内建的一个集合模块,提供了许多有用的集合类. 系列文章 python模块分析之random(一) pyth ...

  9. Python学习笔记四(Python OS模块)

    Python os模块提供了一个统一的操作系统接口函数,通过python os模块可以实现对系统本身的命令,文件,目录进行操作,官方参考文档( http://docs.python.org/libra ...

最新文章

  1. 基于Centos7的autobahn-python+crossbar的环境搭建
  2. 备忘:C语言void *
  3. J2me Canvas
  4. SDRAM芯片初始化、行有效、列读写时序(高手进阶,终极内存技术指南——完整/进阶版) ——本文为转载...
  5. 从零点五开始用Unity做半个2D战棋小游戏(十)
  6. Mac-安装Homebrew报错error: could not lock config file .git/config:
  7. remaining connection slots are reserved for non-replication superuser connections
  8. 北大朱占星:顶级会议疯狂投稿下的AI现状 | 专栏
  9. axios 上传文件_聚是一团火散作满天星,前端Vue.js+elementUI结合后端FastAPI实现大文件分片上传...
  10. web前端实训day06——学子商城登录页面实现
  11. 信息安全技术及应用 系统安全防护技术
  12. GPS从入门到放弃(十六)--- 卫星时钟误差和卫星星历误差
  13. SQL数据库语句大全
  14. 工厂管理口诀,请转给每一个员工背下来!
  15. 关于三星Galaxy S8最好的(和最坏的)事情
  16. 一个汉字等于多少个varchar2
  17. Vibrant Ink Theme for IntelliJ IDEA
  18. js随机跳转域名_从代码角度看各类子域名收集工具
  19. 三次握手与四次挥手简介
  20. 51单片机——红外遥控 C语言入门编程

热门文章

  1. python学习手册视频教程-Python学习精品教程,视频书籍打包下载
  2. python怎么读文件内容-Python读取文件内容为字符串的方法(多种方法详解)
  3. 国内哪里培训python比较好-python培训机构怎么选择?哪家比较靠谱?
  4. python用raise手动抛出异常
  5. 3_深度学习中显卡的使用和显存的分配(20181213)
  6. vmware下/mnt/hgfs下为空的问题
  7. [ROS] Chinese MOOC || Chapter-2.4 Metapackage
  8. 使用字符流 创建文件 写入文件 复制文件
  9. Centos7常用操作
  10. A02 创建实验环境快照