二. python的os模块
一 .os模块
os 模块包括了普遍操作系统的功能
1.name获取操作系统类型
import os print(os.name) # nt 代表是window模块
2.environ 获取操作系统中的环境变量
import os # 获取操作系统中的环境变量 print(os.environ)
3.get获取指定环境变量
print(os.environ.get("PROGRAMFILES"))
# C:\Program Files
4.curdir获取当前目录
import os print(os.curdir) # .
5.getcwd()获取当前工作目录
import os print(os.getcwd()) # D:\老男孩教育
6.listdir()返回指定目录下的所有文件
import os print(os.listdir(r"D:\01learnpython\py2\1")) ['01.txt', '02.txt', '03.txt', '04.txt', '05.txt', 'HHH']
print(os.listdir())
['.idea', '01day', '02day', '03day', '04day', '05day', 'cc.txt', 'test.py', '作业解析', '前面']
7.mkdir rmdir mkdir
import os # 创建文件目录 os.mkdir("Study") # 删除目录 os.rmdir("Study") # 创建绝对目录 os.mkdir(r"E:\Studypython\py2\2\HHH")
# 重命名
os.rename("Study","HHH")
# 删除普通文件
os.remove("HHH\1.txt")
8.stat获取文件属性
import os print(os.stat("01day"))
9.abspath查看当前的绝对路径
print(os.path.abspath(".bbbb")) # D:\老男孩教育\.bbbb
# print(os.path) # <module 'ntpath' from 'D:\\python\\lib\\ntpath.py'>
10.join拼接路径 split 拆分路径
# 拼接路径 # 注意参数二开始不能有斜杠 p1=r"E:\Studypython\py2\HHH" p2="name11" print(os.path.join(p1,p2)) #E:\Studypython\py2\HHH\name11
# 拆分路径 path2=r"E:\Studypython\py2\HHH" print(os.path.split(path2)) #('E:\\Studypython\\py2', 'HHH')拆分就变成元组了
11.splitext获取扩展名
import os path3="D:\01learnpython\py2\1\01.txt" print(os.path.splitext(path3)) #('D:\x01learnpython\\py2\x01\x01', '.txt')
12.isdir 判断是否为目录 isfile 是否为文件
import os path3="D:\01learnpython\py2\1\01.txt" # 判断是否为目录 print(os.path.isdir(path3)) #False
# 判断文件是否存在
print(os.path.isfile("HHH")) #False
13.exists判断目录是否存在
path6= r"F:\dbnodeloginmd5" print(os.path.exists(path6)) # True
14.getsize()获取文件大小
# 获取文件大小 path9= r"F:\dbnodeloginmd5\login.js" print(os.path.getsize(path9)) #1717字符
15.dirname获取文件目录
# dirname获取文件目录 path3="D:\01learnpython\py2\1\01.txt" print(os.path.dirname(path3)) # D:learnpython
# dirname获取文件目录 path10= r"F:\dbnodeloginmd5\login.js" print(os.path.dirname(path10)) # F:\dbnodeloginmd5 # 获取文件名 print(os.path.basename(path10)) #login.js 返回指定路径下的文件和文件夹列表 os.listdir(path)
os案例
# 队列就是先进去的 就先走 相当于排队 # # import collections import os # 队列是先进先出 def aa(path): # 创建一个队列 queue=collections.deque() # 进队 queue.append(path) while len(queue)!=0: # 出队取数据 dirPath=queue.popleft() # 找出所有文件 filesList=os.listdir(dirPath) for fileName in filesList: # 绝对路径 fileAbsPath=os.path.join(dirPath,fileName) #print(fileAbsPath) # E:\Studypython\py2\dir\.project # E:\Studypython\py2\dir\2 # E:\Studypython\py2\dir\app.js # E:\Studypython\py2\dir\controller # E:\Studypython\py2\dir\models # E:\Studypython\py2\dir\node_modules # E:\Studypython\py2\dir\package.json # E:\Studypython\py2\dir\public # E:\Studypython\py2\dir\uploads # E:\Studypython\py2\dir\views # 判断是否为目录 if os.path.isdir(fileAbsPath): print("目录-----"+fileName) #目录-----controller # 目录-----models # 目录-----node_modules queue.append(fileAbsPath) else: print("普通文件-----"+fileName) # 普通文件-----index.js # 普通文件-----callsite-tostring.js # 普通文件-----event-listener-count.js # 普通文件-----index.js aa(r"E:\Studypython\py2\dir")
# 深度遍历 利用 进栈 和 出栈 的知识 import os def getAllDir(path): # 得到目录下的所有目录 filesList=os.listdir(path) # 处理每一个文件、 for fileName in filesList: # 判断路径 是否觉对路径 fileAbsPath=os.path.join(path,fileName) if os.path.isdir(fileAbsPath): print("目录"+fileName) getAllDir(fileAbsPath) else: print("普通文件"+fileName) getAllDir(r"E:\Studypython\py2\dir")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 深度遍历 利用 进栈 和 出栈 的知识 import os def getAllDirDE(path): stack=[] stack.append(path) # print(stack) # ['E:\\Studypython\\py2\\dir'] 处理栈 当前栈为空的时候结束循环 while len(stack)!=0: 从栈里取出数据 dirPath=stack.pop() # print(dirPath) # E:\Studypython\py2\dir 目录下所有文件 filesList=os.listdir(dirPath) #print(filesList) # ['.project', '2', 'app.js', 'controller', 'models', 'node_modules', 'package.json', 'public', 'uploads', 'views'] 处理每一个文件 如果是普通文件则打印 如果是目录则将改目录的地址压栈 for fileName in filesList: # print(fileName) # .project 2 app.js controller models node_modules package.json public uploads views fileAbsPath=os.path.join(dirPath,fileName) #print(fileAbsPath) #E:\Studypython\py2\dir\.project # E:\Studypython\py2\dir\2 # E:\Studypython\py2\dir\app.js # E:\Studypython\py2\dir\controller # E:\Studypython\py2\dir\models # E:\Studypython\py2\dir\node_modules # E:\Studypython\py2\dir\package.json # E:\Studypython\py2\dir\public # E:\Studypython\py2\dir\uploads # E:\Studypython\py2\dir\views # if os.path.isdir(fileAbsPath): 是目录就压栈 print("目录---"+fileName) # 目录---2 # 目录---controller # 目录---models # 目录---node_modules # 目录---public # 目录---uploads # 目录---views stack.append(fileAbsPath) #print(stack) #['E:\\Studypython\\py2\\dir\\2'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models', 'E:\\Studypython\\py2\\dir\\node_modules'] # ['E:\\Studypython\\py2\\dir\\2', 'E:\\Studypython\\py2\\dir\\controller', 'E:\\Studypython\\py2\\dir\\models', 'E:\\Studypython\\py2\\dir\\node_modules', 'E:\\Studypython\\py2\\dir\\public'] else: 打印普通文件 print("普通文件--"+fileName) # 普通文件--.project # 普通文件--app.js # 普通文件--package.json # 普通文件--album.ejs # 普通文件--err.ejs # 普通文件--index.ejs # 普通文件--1 - 副本.jpg # 普通文件--1.jpg # 普通文件--2 - 副本.jpg # 普通文件--2.jpg # 普通文件--3 - 副本.jpg # 普通文件--3.jpg # 普通文件--4 - 副本.jpg # 普通文件--4.jpg # 普通文件--5 - 副本.jpg # 普通文件--5.jpg # 普通文件--bootstrap.js # 普通文件--bootstrap.min.js # 普通文件--jquery-1.12.4.js # 普通文件--npm.js # 普通文件--1.jpg # 普通文件--2.jpg # 普通文件--4.png getAllDirDE(r"E:\Studypython\py2\dir")
二 .sys模块
sys模块 是与python解释器交互模块
import sys # sys模块 是与python解释器交互模块 print(sys.platform) # 返回操作系统 print(sys.argv) # 返回第一个元素程序本身路径 print(sys.version) # 返回python版本 print(sys.path) # 返回环境变量的路径 # # win32 # ['D:/老男孩教育/03day/sys模块/01.py'] # 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] # ['D:\\老男孩教育\\03day\\sys模块', 'D:\\老男孩教育', 'D:\\python\\python36.zip', 'D:\\python\\DLLs', # 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages', # 'D:\\python\\lib\\site-packages\\tornado-5.1.1-py3.6-win-amd64.egg']
import sys # sys模块 是与python解释器交互模块 print(sys.platform) # 返回操作系统 print(sys.argv) # 返回第一个元素程序本身路径 print(sys.version) # 返回python版本 print(sys.path) # 返回环境变量的路径 # # win32 # ['D:/老男孩教育/03day/sys模块/01.py'] # 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] # ['D:\\老男孩教育\\03day\\sys模块', 'D:\\老男孩教育', 'D:\\python\\python36.zip', 'D:\\python\\DLLs', # 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages', # 'D:\\python\\lib\\site-packages\\tornado-5.1.1-py3.6-win-amd64.egg']
import sys # 返回程序执行的本身路径 print(sys.argv) # ['D:/learnPython/py5/02sys模块.py'] # print=(sys.exit(n)) # 查看版本 print(sys.version) # 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)] # print(sys.maxint) # 返回模块的搜索路径 print(sys.path) # ['D:\\learnPython\\py5', 'D:\\learnPython', 'D:\\python\\python36.zip', 'D:\\python\\DLLs', 'D:\\python\\lib', 'D:\\python', 'D:\\python\\lib\\site-packages'] # 返回操作系统 print(sys.platform) # win32 # 进度条 import time for i in range(30): sys.stdout.write("#") time.sleep(0.1) sys.stdout.flush() # flush() 刷新