os模块提供了对系统环境、文件、目录等操作系统级的接口函数。本文主要描述os模块和os.path模块常用函数以及常用实例。

os模块函数

os.getcwd() 获取当前工作的目录。
os.listdir('dirname') 获取指定目录下的文件和目录,以列表形式输出
os.makedirs('dirname1/dirname2') 递归创建目录,相当于shell中的mkdir -p命令
os.removedirs('dirname') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推。不好用,建议使用shutil.rmtree()
os.mkdir('dirname') 创建目录;相当于shell中mkdir命令
os.rmdir('dirname') 删除空目录,若目录不为空则无法删除。相当于shell中rmdir命令
os.chdir('dirname') 切换到执行目录,相当于shell中cd命令
os.remove(path) 删除path指定的文件
os.rename(old,new) 重命名文件或幕
os.chmod(path,mod) 改变文件的访问权限,mode用UNIX系统中的权限代号表示
os.stat(path) 获取path指定文件的所有属性
os.sep 获取操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep  获取当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep  获取用于分割文件路径的字符串
os.name  获取当前使用平台。nt表示windows,posix 表示linux
os.system('command') 执行系统外部命令
os.environ  获取系统环境变量
os.walk() 获取指定目录下的所有文件和目录
os.tmpfile() 创建一个临时文件,文件创建在操作系统的临时目录中

os.path模块函数

os.path.abspath(path) 获取path绝对路径
os.path.split(path) 分割成目录和文件名,以二元组形式返回
os.path.splitext(path) 从路径中分割出文件的扩展名
os.path.dirname(path) 获取文件路径
os.path.basename(path)  获取文件名
os.path.exists(path)  判断文件或目录是否存在
os.path.isabs(path)  判断输入的路径是否为绝对路径
os.path.isfile(path)  判断是否为文件
os.path.isdir(path)  判断是否为目录
os.path.join(path1[, path2[, ...]])  组合多个路径
os.path.getctime(filename)  获取文件或者目录的创建时间
os.path.getatime(filename)  获取文件或者目录的最后存取时间
os.path.getmtime(filename)  获取文件或者目录的最后修改时间
os.path.getsize(filename) 获取文件大小,如果为目录,返回0

重点函数介绍

1、os.walk()

语法

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])

参数描述

top 指定搜索目录
topdown 可选参数,默认值为True, 表示先返回顶级目录下的文件,然后再遍历子目录中的文件。如果为False,表示先遍历子目录中的文件,然后再返回顶级目录下的文件。
onerror 可选,默认值为None,表示忽略文件遍历时的错误。如果不为空,则提供一个自定义函数提示错误信息后继续遍历或抛出异常中止遍历。
followlinks 可选参数,默认值为False。表示是否要跟随目录下的链接去继续遍历,要注意的是,os.walk不会记录已经遍历的目录,所以跟随链接遍历的话有可能一直循环调用下去。

输出

 返回3元组(dirpath, dirnames, filenames)。其中dirpath表示目录的路径,是一个字符串。dirnames 是一个列表,包含了dirpath下所有子目录的名字。filenames是一个列表,包含了非目录文件的名字。这些名字不包含路径信息,如果需要得到全路径,需要使用os.path.join(dirpath, name)

常用实例

1、目录和文件的创建、删除

#-*- coding:utf-8 -*-#import os
import shutilcur_dir = os.getcwd()
new_dir = os.path.join(cur_dir,'temp')if not os.path.exists(new_dir):os.makedirs(new_dir)
else:shutil.rmtree(new_dir)os.makedirs(new_dir)new_file = os.path.join(new_dir,'tmp.log')
fp = open(new_file,'w')
fp.write('test')
fp.close()

2、搜索并输出指定的/home目录下的所有文件

#!/usr/bin/python
# -*- coding: UTF-8 -*-import ossearch_dir = '/home'
for root, dirs, files in os.walk(search_dir):for name in files:print os.path.join(root, name)

3、获取指定文件相关属性

#!/usr/bin/python
# -*- coding: UTF-8 -*-import osfile_stat = os.stat('/etc/passwd')
print file_stat
print 'os.stat.st_uid = %s ' % (file_stat.st_uid) #获取文件所属用户ID
print 'os.stat.st_gid = %s ' % (file_stat.st_gid) #获取文件所属组ID
print 'os.stat.st_size = %s ' % (file_stat.st_size) #获取文件大小,以字节输出
print 'os.stat.st_atime = %s ' % (file_stat.st_atime) #获取最近访问时间
print 'os.stat.st_mtime = %s ' % (file_stat.st_mtime) #获取最近修改时间
print 'os.stat.st_ctime = %s ' % (file_stat.st_ctime) #获取创建时间。某些系统上(如Unix)是最新数据更改的时间。参考平台文档

4、根据关键字搜索指定目录下的文件,并输出文件名

#-*- coding:utf-8 -*-#import os
import sys
import reif len(sys.argv[1:]) == 0:print 'Please input search key words'sys.exit(1)search_keyword = sys.argv[1:]
search_dir = os.getcwd()
filelists = []for root, dirs, files in os.walk(search_dir):for filename in files:file_path = os.path.join(root, filename)pattern = '.*?'.join(search_keyword)regex = re.compile(pattern)fp = open(file_path,'r')for line in fp.readlines():match = regex.search(line)if match:print file_pathbreak

5、统计指定目录下的文件和文件夹大小,类似linux上的du功能

#-*- coding:utf-8 -*-#import osDIRECTORY = 'D:\\worktools'def getDirSize(dir):size = 0for root, dirs, files in os.walk(dir):size += sum([os.path.getsize(os.path.join(root, file)) for file in files])return sizeif __name__ == '__main__':for file in os.listdir(DIRECTORY):filepath = os.path.join(DIRECTORY,file)if os.path.isdir(filepath):dirsize = getDirSize(filepath)print "%s %.2fM" % (filepath,(dirsize/1024/1024))else:dirsize = os.path.getsize(os.path.join(DIRECTORY,filepath))print "%s %.2fM" % (filepath,(dirsize/1024/1024))

输出结果如下:

D:\worktools\alipay_wap_main.apk 46.00M
D:\worktools\Beyond_Compare-Trial-YY.exe 31.00M
D:\worktools\java 2393.00M
D:\worktools\jd-gui-0.3.3.windows 0.00M
D:\worktools\npp_7.3.3_Installer.exe 2.00M
D:\worktools\oracle 11g 1243.00M
D:\worktools\oracle 11g enterprise 2241.00M
D:\worktools\teamviewer 12.00M
D:\worktools\TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi 17.00M
D:\worktools\wps 356.00M
D:\worktools\xmanager 41.00M
D:\worktools\xmanager.rar 41.00M
D:\worktools\zhaoshangyinxing_422.apk 39.00M
D:\worktools\反编译 0.00M

转载于:https://www.cnblogs.com/linyfeng/p/8278429.html

Python中os模块使用方法相关推荐

  1. 【转】关于python中re模块split方法的使用

    注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...

  2. python中os模块教程_python os模块功能和方法总结

    os.sep     可以取代操作系统特定的路径分割符 os.linesep  字符串给出当前平台使用的行终止符.例如,Windows使用' ',Linux使用' ' 而Mac使用''. os.nam ...

  3. Python中OS模块

    2019-06-18 Python中的os模块 os:包含普遍的操作系统的功能 import os #获取操作系统类型nt代表windows posix代表Linux,Unix或者Mac OS X p ...

  4. python中os模块用法

    一.os模块概述 Python os模块包含普遍的操作系统功能.如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的.(一语中的) 二.常用方法 1.os.name 输出字符串指示正在使用的平台 ...

  5. python中os模块_Python的武器库11:os模块

    说到编程语言python,有一个著名的格言"余生太短,只用python".如果要分析为什么会存在这么一句格言?python的语法并不简单,有复杂难懂的部分,之所以有这样一句格言,是 ...

  6. python中os模块里有哪些类_python-os模块的常用方法

    摘抄自:http://www.cnblogs.com/yuxc/archive/2011/08/01/2124012.html 最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不 ...

  7. python中os模块详解_Python OS模块(常见文件操作示例)

    1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...

  8. python中os模块的常用

    os模块很多操作文件目录等等,直接粘举例和注释: 1 import os 2 os.makedirs('a/b/c/d') #可生成多层递归目录(此步会当前文件目录创建a里面b,依次类推) 3 os. ...

  9. Python中Scapy模块使用方法

    Scapy scapy是python中一个可用于网络嗅探的非常强大的第三方库,可以用它来做 packet 嗅探和伪造 packet. scapy已经在内部实现了大量的网络协议.如DNS.ARP.IP. ...

最新文章

  1. #Note# 极客与团队-软件工程师的生存秘笈
  2. 【无线***实战】小试无线安全
  3. [Python人工智能] 三十四.Bert模型 (3)keras-bert库构建Bert模型实现微博情感分析
  4. 写一个函数,输入int型,返回整数逆序后的字符串
  5. 争议下的「中台之路」,该如何破局?
  6. paint java_java – 为什么paint()/ paintComponent()从未被调用?
  7. java ssh 项目心得_ssh实训总结(共10篇).docx
  8. CTRL+ALT快捷键汇总
  9. vs2015+opencv+dilb+于仕琪人类识别算法对人脸特征点进行检测
  10. 西门子plc 用c语言编程,西门子PLC常用指令举例
  11. 【计算机网络】IP地址
  12. 【雷达目标检测】恒定阈值法和恒虚警(CFAR)法及代码实现
  13. cpp头文件方法大全
  14. PageOffice——动态填充Word模板并在线编辑
  15. AWS System Manger 批量操作EC2 实例
  16. 2022西安交通大学912初试经验贴 专业课133
  17. ARM中的RO段、RW段和ZI段的区别
  18. SQL server课程设计-景点门票销售管理系统(基于Javagui制作)
  19. 基于SSM框架简易项目“书籍管理系统”,超详细讲解,附源码
  20. 一文带你秒懂数据结构与算法的三大要素、五大特征!

热门文章

  1. 图像太宽无法输出请裁剪图像或降低分辨率然后重试_真·无监督!延世大学提出图像到图像无监督模型,实验结果超SOTA...
  2. 怎么看我装的sql能不能用_深入浅出sql优化(三)之单表索引优化
  3. html cookie传参,页面间固定参数,通过cookie传值的实现方法
  4. 台式计算机性能清单是强制的吗,教你识别良心商家和奸商电脑配置清单区别以及如何选购台式电脑机箱...
  5. php的array_walk,PHP array_walk() 函数详解
  6. java8 foreach 异常_错误处理 – 在java 8流foreach中抛出异常
  7. tina中信号带宽_关于通频带,3dB带宽,三阶截点和1dB压缩点,截止频率,频率范围,带宽,特征频率(中心频率),截止频率和增益(db)...
  8. python中getopt函数_Python中getopt()函数的使用
  9. 基于java SSM springboot景区行李寄存管理系统设计和实现
  10. HTML+CSS+JS实现 ❤️彩色3D线条动画特效❤️