Python学习笔记之os模块
Python中的os提供了非常丰富的方法用来处理文件和目录,下面我们将详细的介绍os相关的一些方法和函数:
os 路径相关的函数:
1.os.listdir(dirname):列出dirname目录下的目录和文件,需要注意的是传入的dirname是一个目录,而不是文件。
比如:print(os.listdir('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))就会报传入的目录无效,因为传入的是一个文件。
print(os.listdir(os.path.dirname(__file__))):列出当前文件所属目录下的所有文件和目录,使用列表的方式展示所有文件和目录
结果如下:['baidu.py', 'firefox.log', 'geckodriver.log', 'index.py', 'index1.py', 'index2.py', 'index3.py', 'index4.py']
2.os.getcwd():获得当前工作目录(获取的是目录,而不是具体的文件)
例如:当前的文件的绝对路径为:C:\\Python\test\index1.py
那么在index1.py中使用os.getcwd()的值为:C:\\Python\test
3.os.curdir:返回当前目录('.'),暂时还没有找到实际的意义
4.os.chdir(dirname):改变工作目录到dirname目录
5.os.path.isdir(name):判断name是不是一个目录,如果name不是目录就返回false,否则就为true
例如:print(os.listdir('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:False
6.os.path.isfile(name):判断name是不是一个文件,如果是目录或者不存在name这个文件返回false,否则为true
例如:print(os.listdir('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:True
7.os.path.exists(name):判断是否存在文件或目录name,存在则返回true
8.os.path.getsize(name):获得文件大小,单位为字节B
如果name是目录,则看以下的例子
如果是文件,则有两种方式,如果指定了具体的文件,则返回文件大小
例如:print(os.path.getsize('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))【指定具体的文件baidu.py】
返回结果:1220【返回的是baidu.py这个文件的实际文件大小】
例如:print(os.path.getsize('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex'))【未指定具体的文件,只指定了目录】
返回结果:4096【返回的是baidu.py这个文件所占的磁盘空间大小】
从这里我们就延伸出文件的大小以及文件所占空间的区别:
【
一个文件或文件夹属性中的“大小(Size)”和“占用空间(Size on disk)”通常不相互匹配。“大小”的值表示文件实际大小的字节数,而“占用空间”的值表示文件占用硬盘空间大小的字节数。
这种差异来自文件系统在驱动器上存储的文件的方式。为了减少使用的地址数量,文件系统把一定数量的字节当成簇。根据不同的文件系统,常见的簇大小可以从2KB的到32KB。一个被写入到磁盘的文件需要占用若干个不相连的簇,而无论文件的实际大小。因此,一个1KB的文件,保存在一个簇大小为2KB的文件系统将占用2KB,但保存在一个簇大小为32KB的文件系统,它会占用32KB。也就是说,一个33KB的文件将占用17个2KB的簇(34KB)或2个32KB的簇(64KB)。
基于上述的讨论,你会期望占用空间的大小会比实际大小更大,但是多出的部分不会超过一个簇的大小。在查看一个有很多文件的文件夹时,这种差异可能会更大,因为每个单独文件浪费的空间加起来会体现在文件夹上。
】
9.os.path.abspath(name):获得绝对路径
例如:print(os.path.abspath('baidu.py'))
返回结果:C:\Users\xiong\Desktop\其他\自动化\CQ_Credit\testindex\baidu.py
10.os.path.normpath(path):规范path字符串形式
11.os.path.split(name):分割文件名与目录(事实上,如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)
例如:print(os.path.split('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex', 'baidu.py')【使用元组的方式展示结果】
特例:print(os.path.split('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex'))
返回结果:('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit', 'testindex')将最后一个目录作为了文件名,与前面的目录分开了
12.os.path.splitext():分离文件名与扩展名
例如:print(os.path.splitext('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu', '.py')前面为文件名,后面为文件后缀
13.os.path.join(path,name):连接目录与文件名或目录
14.os.path.basename(path):返回文件名
例如:print(os.path.basename('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:baidu.py 【只返回当前文件】
15.os.path.dirname(path):返回文件路径 目录
例如:print(os.path.dirname('C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex/baidu.py'))
返回结果:C:/Users/xiong/Desktop/其他/自动化/CQ_Credit/testindex【返回的是目录】
1、os.path方法
通过传入需要遍历的目录,列出目录下的所有文件并统计文件数,os提供的path模块能对目录非常灵活的操作。
import os,sys
def listdir(dir,file):
file.write(dir + '\n')
fielnum = 0
list = os.listdir(dir) #列出目录下的所有文件和目录
for line in list:
filepath = os.path.join(dir,line)
if os.path.isdir(filepath): #如果filepath是目录,则再列出该目录下的所有文件
myfile.write(' ' + line + '\\'+'\n')
for li in os.listdir(filepath):
myfile.write(' '+li + '\n')
fielnum = fielnum + 1
elif os.path: #如果filepath是文件,直接列出文件名
myfile.write(' '+line + '\n')
fielnum = fielnum + 1
myfile.write('all the file num is '+ str(fielnum))
dir = raw_input('please input the path:')
myfile = open('list.txt','w')
2、os.walk方法
os模块提供的walk方法很强大,能够把给定的目录下的所有目录和文件遍历出来。
方法:os.walk(path),遍历path,返回一个对象,他的每个部分都是一个三元组,('目录x',[目录x下的目录list],目录x下面的文件)
import os
def walk_dir(dir,fileinfo,topdown=True):
for root, dirs, files in os.walk(dir, topdown):
for name in files:
print(os.path.join(name))
fileinfo.write(os.path.join(root,name) + '\n')
for name in dirs:
print(os.path.join(name))
fileinfo.write(' ' + os.path.join(root,name) + '\n')
dir = raw_input('please input the path:')
fileinfo = open('list.txt','w')
walk_dir(dir,fileinfo)
参考地址1:http://blog.csdn.net/smf0504/article/details/54021857
参考地址2:http://www.cnblogs.com/yigehundan/p/6379586.html
Python学习笔记之os模块的更多相关文章
- Python学习笔记:os模块和sys模块
os模块 os.path.driname(path):返回当前路径的上一级路径字符串. os.path.basename(path):返回当前路径的目录名(文件夹名)或文件名(全称). os.path ...
- 吴裕雄--python学习笔记:os模块的使用
在自动化测试中,经常需要查找操作文件,比如说查找配置文件(从而读取配置文件的信息),查找测试报告(从而发送测试报告邮件),经常要对大量文件和大量路径进行操作,这就依赖于os模块. 1.当前路径及路径下 ...
- 吴裕雄--python学习笔记:os模块函数
os.sep:取代操作系统特定的路径分隔符 os.name:指示你正在使用的工作平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'posix'. os.getcwd:得 ...
- python 3.x 学习笔记8 (os模块及xml修改)
1.os模块操作 os.getcwd(): # 查看当前所在路径. os.listdir(path): ...
- Python+Selenium学习笔记7 - os模块
os模块是关于文件/目录方面的 导入语法 import os 相关方法 path.abspath() 用来获取当前路径下的文件 os.path.abspath('checkbox.html') ...
- python学习笔记之常用模块(第五天)
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...
- python学习笔记(九)、模块
1 模块 使用import 语句从外部导入模块信息,python提供了很大内置模块.当你导入模块时,你会发现其所在目录中,除源代码文件外,还新建了一个名为__pycache__的子目录(在较旧的Pyt ...
- Python学习笔记十_模块、第三方模块安装、模块导入
一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,packa ...
- Python学习笔记4-os,sys模块
一.os模块 import os print(os.getcwd())#取当前工作目录 os.chmod("/usr/local",7)#给文件/目录加权限 print(os.ch ...
随机推荐
- 网易编程题——Fibonacci数列
题目描述 Fibonacci数列是这样定义的: F[0] = 0 F[1] = 1 for each i ≥ 2: F[i] = F[i-1] + F[i-2] 因此,Fibonacci数列就形如:0 ...
- PasswordHasher 算法
public override PasswordVerificationResult VerifyHashedPassword(string hashedPassword, string provid ...
- 求职之路共分享——亲身面试题(一) 1/三层与MVC区别
转自http://www.cnblogs.com/ndxsdhy/archive/2011/08/04/2127908.html 觉得这篇文章挺容易理解的, http://www.cnblogs.co ...
- Kruskal算法-最小生成树
2017-07-26 10:32:07 writer:pprp Kruskal算法是根据边的加权值以递增的方式,一次找出加权值最低的边来建最小生成树:并且每次添加的边不能造成生成树有回路,直到找到N ...
- 《Computational Statistics with Matlab》硬译
第1章 从随机变量采样 研究者提出的概率模型对于分析方法来说通常比较复杂,研究者处理复杂概率模型时越来越依赖计算.数值方法,通过使用计算方法,研究者就不用对一些分析技术做一些不现实的假设(如正态性和独 ...
- thinkphp5新特性
1.惰性加载(需要什么就加载什么,不需要什么就不加载),显著提高了应用性能: 2.支持composer: 3.遵守PSR-2.PSR-4规范: 4.支持单元测试: 5.安全机制,详细的日志能帮你轻轻松 ...
- 配置mybatis-config.xml出现过很诡异的现象
1 首先得保证包的导入正确 2 然后如果把mybatis-config.xml放在src的某个文件夹下,最后能够build path 3 之后一直报 Archive for required libr ...
- Entity Framework 6 预热、启动优化
虽然文章题目是针对EF的,但涉及的内容不仅仅是EF. 场景介绍 目前在做的一个项目,行业门户,项目部分站点按域名划分如下: user.xxx.com:用户登陆注册 owner.xxx.com:个人用户 ...
- ubuntu14.04搭建Hadoop2.9.0伪分布式环境
本文主要参考 给力星的博文——Hadoop安装教程_单机/伪分布式配置_Hadoop2.6.0/Ubuntu14.04 一些准备工作的基本步骤和步骤具体说明本文不再列出,文章中提到的“见参考”均指以上 ...
- OpenCV几种边缘检测的简例
简单记录一下OpenCV的几种边缘检测函数的用法. 边缘检测算法 以Sobel边缘检测算法为例. Sobel卷积核模板为: 偏导公式为: Gx(i,j)=[f(i+1,j−1)+2f(i+1,j)+f ...