Python中os模块使用方法
os模块提供了对系统环境、文件、目录等操作系统级的接口函数。本文主要描述os模块和os.path模块常用函数以及常用实例。
os模块函数
os.getcwd() 获取当前工作的目录。
os.listdir('dirname') 获取指定目录下的文件和目录。缺点是不能递归显示。
os.makedirs('dirname1/dirname2') 递归创建目录。在dir_temp目录下创建data_m1目录,在data_m1目录下创建data_m2目录。
os.removedirs('dirname') 若目录为空,则删除。不好用,建议使用shutil.rmtree()。比如data_m1目录下存在123.txt文件和data2_m2目录。
上述命令执行成功后,只删除data2_m2空文件夹,data_m1由于存在123.txt文件没有删除。要想全部删除,建议使用shutil.rmtree()
os.mkdir('dirname') 创建目录;相当于shell中mkdir命令。下述命令在data_m1目录下创建data2_m2文件。但是如果在不存在的目录下创建目录会失败,同时如果指定目录下创建已有指定目录也会失败。
os.rmdir('dirname') 删除空目录,若目录不为空则无法删除。只能删除空目录,不好用。
os.chdir('dirname') 切换到执行目录。如下从当前目录切换到c:\temp目录下。
os.remove(path) 删除path指定的文件。文件必须存在,否在会报错。
os.rename(old,new) 重命名文件或目录。文件名123.txt修改为456.txt
os.stat(path) 获取path指定文件的所有属性
os.system('command') 执行系统外部命令,可以获取返回命令结果码,但是无法获取命令执行输出结果,输出结果直接打印到屏幕终端。
os.environ 获取系统环境变量。以字典形式返回。
想要获取指定变量可以使用如下格式
os.path模块函数
os.path.abspath(path) 获取path绝对路径。返回当前目录下123.txt文件的绝对路径
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[, onerror=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 shutil #全局变量
cur_dir = os.getcwd()
new_dir = os.path.join(cur_dir,'temp') #判断new_dir目录是否存在,不存在则创建。如果存在则删除再创建
if not os.path.exists(new_dir):
os.makedirs(new_dir)
else:
shutil.rmtree(new_dir)
os.makedirs(new_dir) #创建tmp.log文件并写入内容
new_file = os.path.join(new_dir,'tmp.log')
fp = open(new_file,'w')
fp.write('test')
fp.close()
2、查找d:\dir_temp目录下的所有文件,以绝对路径输出文件名
# -*- coding: utf-8 -*- import os search_dir = 'd:\\dir_temp'
for root, dirs, files in os.walk(search_dir):
for name in files:
print os.path.join(root, name)
运行结果如下:
3、获取指定文件相关属性
# -*- coding: utf-8 -*- import os filename = 'd:\\dir_temp\\data_m1\\456.txt'
file_stat = os.stat(filename)
print(file_stat) # 获取文件所属用户ID
print('os.stat.st_uid = %s ' % (file_stat.st_uid,))
#获取文件所属组ID
print('os.stat.st_gid = %s ' % (file_stat.st_gid,))
#获取文件大小,以字节输出
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,))
#获取创建时间。某些系统上(如Unix)是最新数据更改的时间。
print('os.stat.st_ctime = %s ' % (file_stat.st_ctime,))
运行结果如下
4、根据关键字搜索指定目录下的文件,并输出文件名
#-*- coding:utf-8 -*-# import os
import sys
import re if 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_path
break
5、统计指定目录下的文件和文件夹大小,类似linux上的du功能
#-*- coding:utf-8 -*-# import os DIRECTORY = 'D:\\worktools' def getDirSize(dir):
size = 0
for root, dirs, files in os.walk(dir):
size += sum([os.path.getsize(os.path.join(root, file)) for file in files])
return size if __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
Python中os模块使用方法的更多相关文章
- python中os模块函数方法详解最全最新
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 import os print(os.getcwd()) os.chdir("dirname") 改 ...
- python中os模块中文帮助
python中os模块中文帮助 python中os模块中文帮助文档文章分类:Python编程 python中os模块中文帮助文档 翻译者:butalnd 翻译于2010.1.7——2010.1.8 ...
- 【转】关于python中re模块split方法的使用
注:最近在研究文本处理,需要用到正则切割文本,所以收索到了这篇文章,很有用,谢谢原作者. 原址:http://blog.sciencenet.cn/blog-314114-775285.html 关于 ...
- python中os模块在windows下的使用
今天学习了一下Python的os模块,主要是针对文件夹和文件路径的一系列操作. 与Python内置函数相比这里这里的函数功能更多样化,功能也更强大.但是学习过程中我发现很多函数都是只适用于unix系统 ...
- Python学习-32.Python中os模块的一些方法
首先肯定是要引入os模块了. import os getcwd方法: print(os.getcwd()) 上面的语句将会输出当前的工作目录,相当于C#中的Environment.CurrentDir ...
- python中os模块
os 模块 操作系统模块,该模块主要处理与操作系统相关的操作 最常用是文件操作:打开.读取 import os os.getcwd() #获取当前执行文件夹路径 os.chdir('dirnam ...
- Python中os模块、csv模块和xlrd模块的使用
目录 os模块的使用 open("test.txt","mode") 读取文件中的内容 f.read() f.readline(size) f.readline ...
- python中os模块和sys模块的常见用法
OS模块的常见用法 os.remove() 删除文件 os.rename() 重命名文件 os.walk() 生成目录树下的所有文件名 os.chdir() 改变目录 os.mkd ...
- python中OS模块操作文件和目录
在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...
随机推荐
- 第二章:安装zabbix过程
2.2 安装zabbix过程 2.2.1 安装方式选择 编译安装 (服务较多,环境复杂) yum安装(干净环境) 使用yum 需要镜像yum源 http://www.cnblogs.com/clsn/ ...
- github----awesome-typescript-projects
https://github.com/brookshi/awesome-typescript-projects
- sas 获取字符串长度实例
data _null_;a='Dogcat';b=' Dog cat';c=' Dog cat ';Ra=length(a);Rb=length(b);Rc=length(c);put Ra=Rb ...
- Redis 实现问题
Redis和数据库的同步如何做? 设置redis中数据的过期时间(登录信息) 更新或修改数据库中数据的时候同时更新redis的 数据 使用MQ更新缓存数据 Redis的好处? 速度快:因为数据在内存中 ...
- (转)C#实现注册码
原文地址:http://www.cnblogs.com/netcorner/archive/2011/08/31/2911922.html 开发软件时,当用到商业用途时,注册码与激活码就显得很重要了. ...
- SPSS中文版安装
我这里安装的是64位的 双击安装包 选择您的安装目录 在这里等几分钟 重要!安装完毕后将图中选项勾去掉! 这个时候输入一下授权码 9DNCAF2O3QVDV7FBIO696OO6GWLNXZPPRYT ...
- 蓝桥杯Java真题解析
上个月参加蓝桥杯省赛拿了个省一,自从比赛完之后就一直没怎么写代码了,还有一个多月就要国赛了,从现在开始准备下国赛,但是我也不想学什么算法,而且我还在准备考研,所以就打算只做下历年的真题,争取国赛拿个国 ...
- mke2fs
mke2fs - create an ext2/ext3/ext4 filesystem # mke2fs -b -c -N -t ext4 /dev/sdb #(注意末尾是/dev/sdb....? ...
- linux中测试py脚本使用debug模式
python -mtrace --trace ping_host.py
- FastDFS 配置 Nginx 模块,并实现分布式同步-Linux
1.搭建虚拟机 a.复制虚拟机文件 首先复制我们之前安装好的fastdfs虚拟机,因为我们现在要设置它的IP为21,改名为CentOS-fastdfs - 21. b.设置网络 生成新的MAC地址 设 ...