Python基础学习之 os 模块详解
Python基础学习之 os 模块详解
文章目录
- Python基础学习之 os 模块详解
- 1. 路径操作
- 1.1 os.chdir(),切换当前工作目录;
- 1.2 os.getcwd(),返回工作目录路径;
- 1.3 os.mkdir() & os.makedirs(),创建目录;
- 1.4 os.rmdir() & os.rmdirs(),删除目录;
- 1.5 os.listdir(path=...) ,返回指定文件夹下所有的文件和文件夹
- 1.6 os.walk(path=...) ,遍历目录,返回一个元组 (root,dirs,files);
- 1.7 os.path.isdir(), 判断是否为目录;
- 1.8 os.path.isabs(path),判断是否为绝对路径;
- 1.9 os.rename(src, dst),修改文件夹名称;
- 2. 文件操作
- 2.1 os.remove(path) ,删除一个文件
- 2.2 os.path.abspath(),返回文件的绝对路径
- 2.3 os.path.join(),路径拼接;非常常用的函数,必须要熟练掌握;
- 2.4 os.path.dirname(path),去掉文件名,返回目录
- 2.5 os.path.splitext(),将扩展名与前面的路径分开;返回元组类型;
- 2.6 os.path.basename(),返回文件名;
- 2.7 os.path.exists(),检查字符串是不是路径;返回布尔类型;
- 2.8 os.path.isfile(),检查字符串是不是文件;返回布尔类型;
- 2.9 os.path.getsize(),返回文件大小;
- 2.10 os.open() & os.close(),文件读取和关闭;
- 2.11 os.path.getatime() & os.path.getmtime() , 文件的最后存取时间 & 最后修改时间;
- 3. 其他操作
- 3.1 os.system(command) , 相当于执行对应指令(command)
- 3.2 os.name,可以得到操作系统的类型;
- 3.3 os.sep,可以得到操作系统特定的路径分隔符;
- 3.4 os.linesep,可以可到操作系统的行终止符;
- 4. 实例
- 4.1 固定时间运行程序
- 4.2 寻找文件中的特定字符
os模块的作用可以分为三类:路径操作,文件操作,其他操作;
1. 路径操作
1.1 os.chdir(),切换当前工作目录;
os.chdir(r'D:\测试文件夹') # 将工作目录切换为:D:\测试文件夹
1.2 os.getcwd(),返回工作目录路径;
print(os.getcwd()) # 输出:D:\PY_useful\3_python 基础,就是当前.py文件所在的位置;
os.chdir(r'D:\测试文件夹') # 切换工作目录
print(os.getcwd()) # 返回当前程序所在的路径 输出:D:\测试文件夹;
1.3 os.mkdir() & os.makedirs(),创建目录;
os.mkdir() :创建目录,只可以一级一级的创建目录;
os.makedirs() :创建多级目录,即前一级的文件夹不存在,也可以创建;
os.mkdir(r'D:\PY_useful\python建目录')
# 创建目录,只可以一级一级的创建目录,前提是 D:\PY_useful\ 已经存在,不然会报错;作用是:可以防止创建双层或者多层错误路径;
# 如果PY_useful 文件夹不存在,则会报错;os.makedirs(r'D:\PY_useful\python建目录\一级\二级') # 创建多级目录,即前一级的文件夹不存在,也不会报错;哪怕中间目录不存在也能正常的创建;
1.4 os.rmdir() & os.rmdirs(),删除目录;
os.rmdir()(r'D:\PY_useful\python建目录')# 删除目录
os.rmdirs(r'D:\PY_useful\python建目录\一级\二级') # 删除多级目录
1.5 os.listdir(path=…) ,返回指定文件夹下所有的文件和文件夹
使用 os.listdir(path=…) ,可以查看一层的内容;举例如下:
os.listdir(path=r'D:\测试文件夹') # ['一层文件.txt', '一层文件2.txt', '一层文件夹']
1.6 os.walk(path=…) ,遍历目录,返回一个元组 (root,dirs,files);
每次遍历的对象都是返回的是一个三元组(root,dirs,files),其中:
- root 所指的是当前正在遍历的这个文件夹的本身的地址;
- dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录);
- files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录);
os.walk(path=…) 一般的用法如下:
for root, dirs, files in os.walk(r'D:\测试文件夹'):print('当前文件夹:' + root) # 返回当前的文件夹地址;print('本层包含的文件夹:') for name in dirs: # 遍历文件夹中的文件夹;print(os.path.join(root, name)) # 利用os.path.join(root, name),返回一个完整的文件夹路径;print('本层包含的文件:')for name in files: # 遍历文件夹中的文件;print(os.path.join(root, name)) # 利用os.path.join(root, name),返回一个完整的文件路径;print('') # 循环一次则输出一个空行;方便区分;
本章内容中的文件夹结构;参考上图
输出:
当前文件夹:D:\测试文件夹
本层包含的文件夹:
D:\测试文件夹\一层文件夹
本层包含的文件:
D:\测试文件夹\一层文件.txt
D:\测试文件夹\一层文件2.txt当前文件夹:D:\测试文件夹\一层文件夹
本层包含的文件夹:
D:\测试文件夹\一层文件夹\二层文件夹
D:\测试文件夹\一层文件夹\二层文件夹--2
本层包含的文件:
D:\测试文件夹\一层文件夹\二层文件.txt
D:\测试文件夹\一层文件夹\二层文件2.txt当前文件夹:D:\测试文件夹\一层文件夹\二层文件夹
本层包含的文件夹:
D:\测试文件夹\一层文件夹\二层文件夹\三层文件夹
本层包含的文件:
D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt当前文件夹:D:\测试文件夹\一层文件夹\二层文件夹\三层文件夹
本层包含的文件夹:
本层包含的文件:当前文件夹:D:\测试文件夹\一层文件夹\二层文件夹--2
本层包含的文件夹:
本层包含的文件:
D:\测试文件夹\一层文件夹\二层文件夹--2\三层文件----2.txt
1.7 os.path.isdir(), 判断是否为目录;
print(os.path.isdir('D:\测试文件夹\一层文件夹\二层文件夹')) # 是文件夹,则输出:True
print(os.path.isdir('D:\测试文件夹\一层文件.txt')) # 不是文件夹,则输出:False
1.8 os.path.isabs(path),判断是否为绝对路径;
os.path.isabs('D:\测试文件夹\一层文件夹\二层文件夹') # 是绝对路径,则输出:True
1.9 os.rename(src, dst),修改文件夹名称;
其中:src – 要修改的目录名;dst – 修改后的目录名;举例如下:
os.rename('D:\测试文件夹\一层文件夹','D:\测试文件夹\一层文件夹_改') # 执行语句后,文件夹名称变为:一层文件夹_改;
2. 文件操作
2.1 os.remove(path) ,删除一个文件
os.remove('D:\测试文件夹\一层文件.txt') # 删除文件;
2.2 os.path.abspath(),返回文件的绝对路径
2.3 os.path.join(),路径拼接;非常常用的函数,必须要熟练掌握;
连接两个或更多的路径名组件,在前面的 1.6 中已经使用;注意以下三点:
- 如果各组件名开头不包含’/’,则函数会自动加上;
- 如果有一个组件是一个绝对路径,则在它之前的所有组件均会被舍弃;
- 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾;
举例如下:
a = os.path.join('D:\\','测试文件夹','一层文件2.txt')
print(a) # D:\测试文件夹\一层文件2.txt
a = os.path.join('D:\\','测试文件夹','')
print(a) # D:\测试文件夹\ ,这里因为最后有一个空字符串,所以路径以’/’分隔符结尾
2.4 os.path.dirname(path),去掉文件名,返回目录
a = os.path.dirname('D:\测试文件夹\一层文件夹\二层文件夹--2\三层文件----2.txt')
print(a) # 输出: D:\测试文件夹\一层文件夹\二层文件夹--2
2.5 os.path.splitext(),将扩展名与前面的路径分开;返回元组类型;
# os.path.splitext()
a = os.path.splitext('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt')
print(a) # 输出元组:('D:\\测试文件夹\\一层文件夹\\二层文件夹\\三层文件', '.txt')
print(a[0]) # 输出:D:\测试文件夹\一层文件夹\二层文件夹\三层文件
print(a[1]) # 输出:.txt
2.6 os.path.basename(),返回文件名;
a = os.path.basename('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt')
print(a) # 三层文件.txt
2.7 os.path.exists(),检查字符串是不是路径;返回布尔类型;
是路径,则返回True, 否则返回False;
a = os.path.exists('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt')
print(a) # True
2.8 os.path.isfile(),检查字符串是不是文件;返回布尔类型;
# os.path.isfile()
a = os.path.isfile('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt')
print(a)
2.9 os.path.getsize(),返回文件大小;
# os.path.getsize()
a= os.path.getsize('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt')
print(a)
2.10 os.open() & os.close(),文件读取和关闭;
这里的两个方法,不常用;打开文件一般使用 open() 方法;
os.open() # 用于文件读取;
os.close() # 用于文件关闭;
2.11 os.path.getatime() & os.path.getmtime() , 文件的最后存取时间 & 最后修改时间;
import time
a = os.path.getatime('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt') # 返回path所指向的文件或者目录的最后存取时间,得到的是时间戳
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(a))) # 将时间戳变为格式化字符串;输出:2020-09-25 11:06:21a=os.path.getmtime('D:\测试文件夹\一层文件夹\二层文件夹\三层文件.txt') # 返回path所指向的文件或者目录的最后修改时间,得到的是时间戳
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(a))) # 将时间戳变为格式化字符串;输出:2020-09-25 11:06:21
上面时间戳变为可视化字符串的方法,可以参考:Python基础学习之时间模块 time模块 datetime模块
3. 其他操作
3.1 os.system(command) , 相当于执行对应指令(command)
os.system(r'D:\print_fun.py') # 执行对应地址的.py 文件,在定期运行程序时,会经常用到这个方法;
3.2 os.name,可以得到操作系统的类型;
只有三个返回值,分别为:posix , nt , java, 对应linux / windows / java虚拟机
os.name # 输出:nt;
3.3 os.sep,可以得到操作系统特定的路径分隔符;
Windows 系统分隔符为:\ ; Linux 系统分隔符为:/ ;当程序需要在不同系统运行时,通常会用到该属性;
os.sep # 输出:\; 操作系统特定的路径分隔符,Linux 系统返回 /, Windows 返回 \;
3.4 os.linesep,可以可到操作系统的行终止符;
不同系统的终止符:Windows使用 ‘\r\n’,Linux使用 ‘\n’ , Mac使用 ‘\r’ 。
os.linesep # 字符串给出当前平台使用的行终止符。
4. 实例
4.1 固定时间运行程序
每隔10分钟,运行一次程序;
import time,osdef sleep_time(hour,min,sec):return hour * 3600 + min * 30 +secsleep = sleep_time(0,10,0)
while True:time.sleep(sleep)print('开始执行;')print('现在时间为:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(a)))os.system(r'D:\print_fun.py')print('执行完成;')
每天早上 7:00 运行程序;
import time, oswhile True:time_now = time.strftime("%H:%M", time.localtime())if time_now == '07:00':print('开始执行;')print('现在时间为:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))os.system(r'D:\print_fun.py')print('执行完成;')time.sleep(60) # 因为我们是以分钟作为匹配值的,所以程序运行后,延时60s,确保程序不重复执行;
4.2 寻找文件中的特定字符
寻找制定文件夹下(这里是:测试文件夹)下,Excel 文件内容包含字符串 ‘小可爱’ 的文件,并打印出文件名 & sheet 名;
备注:测试文件夹的目录见上图,其中两个excel 文件的sheet1 & sheet2 均写了字符串如下字符串,参考下图:
import re
import pandas as pddef func(folder_dir=r'',file_name=''):''':param folder_dir: 需要被寻找的文件夹路径:param file_name: 被寻找的特殊字段,必须是xlsx文件:return: 打印出特殊字段所在的文件路径'''xmlRegex = re.compile(r'.*?.(xlsx|xls)', re.I) #oldDocDir=folder_diros.chdir(oldDocDir)for foldername, subfolders, filenames in os.walk(oldDocDir):for filename in filenames:# absdir = os.path.abspath('.')if xmlRegex.findall(str(filename)):try:oldName = os.path.join(foldername, filename)info = pd.read_excel(oldName, sheet_name=None) # sheet_name = None 则会读所有的sheet;for key,value in info.items():if file_name in value.to_string():print(file_name,'在文件:',oldName,end=' ')print('的',key,'中')except :print(oldName,'--> 这个文件我读不了呀~~请注意!')func(r'D:\测试文件夹',r'小可爱') # 调用函数,传入两个参数:需要寻找的目录 & 需要寻找的字符;
输出: 我们可以看到,两个文件中的四个 ‘小可爱’ 都被找到了;在日常工作中,这可以大大节省时间,提高工作效率;
小可爱 在文件: D:\测试文件夹\一层文件夹\二层文件.xlsx 的: Sheet1 中
小可爱 在文件: D:\测试文件夹\一层文件夹\二层文件.xlsx 的: Sheet2 中
小可爱 在文件: D:\测试文件夹\一层文件夹\二层文件夹\三层文件夹\四层文件.xlsx 的: Sheet1 中
小可爱 在文件: D:\测试文件夹\一层文件夹\二层文件夹\三层文件夹\四层文件.xlsx 的: Sheet2 中
Python基础学习之 os 模块详解相关推荐
- Python 标准库之 sys 模块详解
Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...
- python常用内置模块-Python常用内置模块之xml模块(详解)
xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...
- Python基础------几种循环结构详解
Python基础------几种循环结构详解 在所有的编程语言中,循环结构是必不可少了,Python也一样.在python主要有一下几种循环结构:for-in-.while.range()三种最为常见 ...
- Java中大数据数组,Java基础学习笔记之数组详解
摘要:这篇Java开发技术栏目下的"Java基础学习笔记之数组详解",介绍的技术点是"java基础学习笔记.基础学习笔记.Java基础.数组详解.学习笔记.Java&qu ...
- Python os 模块详解
你好,我是悦创. 此篇文章,是为了完善 Python 办公自动化的课程,有兴趣的报名一对一办公自动化的小伙伴,可以加 V:Jiabcdefh. 如果我们要操作文件.目录,可以在命令行下面输入操作系统提 ...
- Python模块——os模块详解
本文大纲 os模块是Python中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录.本着只讲最有用的态度,下方我将os模块中一些我经常用的的方法,给大家详细列举出来了,希望减 ...
- python os模块详细_python之os模块详解
importos#os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径#print(os.getcwd()) # G:\python二期\一月\day18 #os.curdi ...
- python中os模块详解_Python OS模块(常见文件操作示例)
1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...
- 12.19 Python os模块详解
除前面章节介绍的各种函数之外,os 模块还提供了大量操作文件和目录的函数,本节将介绍 os 模块下常用的函数. 如果读者需要查阅有关这些函数的说明,则可访问 https://docs.python.o ...
最新文章
- go 调用dll char*传输
- 纯CSS实现漂亮圆角阴影边框
- matlab集群搭建问题
- nexus3下载地址
- 用python编写daemon监控进程并自动恢复(附Shell版)
- 禁止ASP.NET MVC模型绑定时将空字符串绑定为null
- 支付宝公布“五一”出境游报告:国人太能花钱了
- 作业四:灯泡异常问题
- 缓存淘汰策略——最近最久未使用策略(LRU)
- mariadb安装_MariaDB CentOS 安装的时候如何确定 Repo 地址
- UnityShader11:纹理属性
- RegeX版本更新至2.0.0.4 加入英文语言包
- java,python,scala发送http请求
- c串口一直读到缓存数据_STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)...
- 双向晶闸管触发电路工作原理图
- IMETool 输入法设置工具 十问十答
- Linux之进程管理——查看进程
- chrome不跟随系统分辨率
- 工程经济作业1答案_2018年电大《工程经济与管理》阶段作业1及答案(网上作业).doc...
- 引流的最快方法是什么?我是如何实现长期被动引流的
热门文章
- java异常排列方式_java中排序报:Comparison method violates its general contract异常的解决...
- 华为美女小姐姐,被外派墨西哥后,发生的事...
- Python数据分析师薪资大赏(内附学习资料)
- Visual Studio Code + SDCC开发51单片机 1 - 环境安装
- 怎么看计算机硬件配置情况,怎么样查看电脑配置?5种方法查看电脑硬件配置好坏图文详解...
- Pytorch学习之cuda
- 调查显示,“大辞职潮”对经理层打击最为严重,工作倦怠成为离职的关键原因 | 美通社头条...
- 金蝶软件系统管理与维护常见问题
- 50M/s, Onedrive直链提取-IDM实现满速下载
- 综述:当医学影像遇上深度学习