Python中os模块使用方法

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

66319d电源使用说明书_电热水壶怎么使用?电热水壶烧不开水的问题是什么?

电热水壶可在最短的时间里面给人们煮出热水,是目前人们见到的最为常见的小家电产品,但是电热水壶怎么使用?在使用电热水壶时,有遇到烧不开水的问题,这就影响到正常使用水壶了,电热水壶烧不开水的问题是什么?一、电热…

django 项目中遇到的问题(持续更新中)

问题1:in include provide the namespace argument to include() instead 描述:在最外层的urls.py 添加项目的urls后报错,错误显示:in include provide the namespace argument to include() instead." 解决方案:…

机械制图中外螺纹的画法_机械制图基础知识之图样简化画法

机械制图时是否觉得图样很复杂,很难?那就看看下面的方法吧。1)当物体具有若干相同结构(齿、槽等),并按一定规律分布时,只需画出几个完整的结构,其余用细实线连接,并注明结构的总数相同结构与简化画法2)若干直径相同且…

获取程序执行的时间

编写程序到一定程度的,我们就不得不考虑成都所占用的内存、时间。那么如何获取程序执行的时间呢?需要用到currentTimeMillis方法。 在程序开始时获取一个时间,结束时获取一个时间,两者相减,即为程序所用时间。 下面程序…

mfc编程 孙鑫_孙鑫VC++视频教程笔记-(3)MFC程序框架的剖析 附1-SDI程序流程图

1,寻找WinMain人口:在安装目录下找到MFC文件夹下的SRC文件夹,SRC下是MFC源代码。路径:MFC|SRC|APPMODUL.CPP:_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPTSTR lpCmdLine, int nCmdShow){// call shared/exported …

每天一个linux命令(性能、优化):【转载】free命令

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。 1.命令格式: free [参数] 2.命令功能: free 命令显示系统使用和空闲…

gitee存放代码_git / gitee 提交本地仓库代码到Git或Gitee流程 及 常见报错

前提:在 Windows 下安装 git 客户端然后直接在 base 中执行命令1、本地初始化 git 设置git config --global user.name "你的名字或昵称"git config --global user.email "你的邮箱"2、进入项目文件夹,初始化目录 --通过命令 git in…

mysql可以存文档_MySQL 文档存储介绍

MySQL 文档存储 可以跳过底层数据结构创建、数据规范化和其它使用传统数据库时需要做的工作,直接存储数据。MySQL 可以提供 NoSQL JSON 文档存储Document Store了,这样开发者保存数据前无需规范化normalize数据、创建数据库,也无需在开发之前…

Maven项目配置、检出、运行

副标题:JDK安装到Maven运行 关键字:JDK SVN Maven Tomcat Eclipse IDEA 一、JDK 1、JDK包 JDK包 ../Java/jdk1.8 # 按需 图例 2、环境变量 步骤 计算机 → 属性 → 高级系统设置 → 环境变量 → 系统变量 → 新建/编辑 设置 JAVA_HOME ..…

mysql 存储过程代码_MySQL存储过程及常用函数代码解析

mysql存储过程的概念:存储在数据库当中可以执行特定工作(查询和更新)的一组SQL代码的程序段。mysql函数的概念:函数是完成特定功能的SQL语句,函数分为内置函数和自定义函数(user-defined function UDF)MySQL存储过程和函数的区别存储过程可以…

MySQL数据库恢复(使用mysqlbinlog命令)

1:开启binlog日志记录 修改mysql配置文件mysql.ini,在[mysqld]节点下添加 复制代码代码如下:# log-bin log-bin E:/log/logbin.log 路径中不要包含中文和空格。重启mysql服务。通过命令行停止和启动mysql服务 复制代码代码如下:c:\>net stop mysql…

mysql 创建数据库文件_mysql学习之通过文件创建数据库以及添加数据

1、# 创建数据库语句create database mydb default character set utf8;# 运用数据库语句use mydb;# 创建表格,这里只简单的创建一张表格# 设置InnoDB主要是为了事务操作的需要create table mytable(id int primary key auto_increment,name varchar(20),count int …

angularjs启动项目报ERROR in AppModule is not an NgModule解决方法

这主要是ts编译器版本问题,一般是因为ts编译器版本过高导致。 解决方式: npm uninstall -g typescriptnpm install -g typescripttsc -v 查看安装的typescript版本修改package.json中的typescript版本为当前电脑所安装版本 删除node_module重新安装cnpm …

mysql gtid 备份恢复_MYSQL数据库备份恢复

在实例存活的情况,可以在实例状态中查询ALL_GTID。在实例崩溃的情况,无法在实例状态中查询ALL_GTID。可以通过查询BINLOG中的Previous-GTIDs计算来获得ALL_GTID。下面列举与ALL_GTID相关的变量。与ALL_GTID相关的变量Previous-GTIDsPrevious-GTIDs格式如…

PMP 笔记

项目: 为创造独特的产品、服务或结果而进行的临时性工作。 项目特征: 独特性:Unique、临时性:Temporary、渐进明细。 渐进明细:预算越来越精细。比如三峡工程中,预算从10亿级的误差到1亿误差,再…

在mysql怎样查询地址和电话_Mysql数据查询

Mysql查询数据多次过滤条件:from、where、group by、having、distinct、order by、limit > 层层筛选后的结果查:select [distinct] 字段1 [[as] 别名1],...,字段n [[as] 别名n] from [数据库名.]表名 [条件];注:一条查询语句,可…

谷歌搜索技巧:搜索语法+隐藏彩蛋+高级设置

Google是一个非常精密成熟的搜索引擎,其搜索结果的丰富性和准确度较其他搜索引擎都要好,但大多数用户都还只是停留在搜索框中输入一两个关键字,然后点击“搜索”按钮的阶段,这一过程是非常低效和无谓的。学习一些搜索引擎常用的搜…

mysql如何给表字段加密_Mysql 字段加密

1、PASSWORD()2、ENCODE(,) DECODE(,)3、MD5()4、SHA5()5、AES_ENCRYPT AES_DECRYPT加密 select aes_encrypt(name, password );解密 select aes_decrypt(aes_encrypt(name, password ), password );可用hex或base64转码(base64在mysql5.6及以上支持)select hex(aes_en…

mysql数据类型支持比较运_Mysql支持的数据类型(总结)

一.数值类型Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,DECIMAL,NUMBERIC),以及近似数值数据类型(FLOAT,REAL,DOUBLE PRESISION),并在此基础上进行扩展。扩展后增加了TINYINT,MEDIUMINT,BIGINT这3种长度不同的整形&#x…

Java 面向对象的设计思维

面向对象的设计思维:合适的方法应该出现在合适的类里面 |解释|:方法是哪个类的,方法便在哪个类里,由这个类去调用 |实际应用|:基本数据类型包装类:因为想要对基本类型数据进行更多的操作,最方便的方式就是将其封装成对象.在对象的描述中定义更多的属性和…