第十二章 os模块使用

作者: 帅气的Lucky | 来源:发表于2019-04-01 12:54 被阅读0次

OS模块

包含了普遍的操作系统的功能

一 函数

os.name 获取操作系统类型nt->windows posix->Linux、Unix或Mac OS
os.environ 获取操作系统中的所有环境变量
os.environ.get("path") 获取指定环境变量
os.curdir 获取当前目录
os.getcwd() 获取当前工作目录,即当前python脚本所在的目录
os.listdir(path) 以列表的形式返回指定目录下的所有的文件
os.mkdir(path) 创建新目录
os.rmdir(path) 删除目录
os.stat(path) 获取文件属性
os.rename(old, new) 重命名
os.remove(filename) 删除普通文件
os.system(cmmand) 运行shell命令 shutdown -s -f/ shutdown -a
os.path.join(p1, p2) 将p1 p2连接成一个正确的路径
os.path.splitext(path) 获取文件扩展名
os.path.isdir(path) 判断是否是目录
os.path.isfile(path) 判断文件是否存在
os.path.exists(path) 判断目录是否存在
os.path.getsize(path) 获得文件大小(字节)
os.path.dirname(path) 获得路径的目录名
os.path.basename(path) 获得路径的文件名
os.path.abspath("./kaige") 查看当前的绝对路径
os.path.split(C:\Users\xlg\Desktop\Python-1704) 拆分路径

python删除一个非空文件夹竟然如此简单

import shutil
shutil.rmtree('c:\\test')

递归遍历 统计大小

import os
# 递归 输出 所有的文件名
path = r'C:\Users\xlg\Desktop\python安装文件'
def myfile(path):
    sum = 0 # 文件大小初始化 为 0
    myfilelist = os.listdir(path) #返回当前文件夹下的所有的文件 和 目录
    for i in myfilelist: #遍历
        newpath = os.path.join(path,i) #将文件和路径拼凑在一起 形成一个新的完整的文件路径
        if os.path.isdir(newpath): #判断是否是 目录
            sum += myfile(newpath)  #如果是目录 就进去 继续统计
        if os.path.isfile(newpath):  #如果是文件 直接统计大小
            sum += os.path.getsize(newpath) #累加文件的大小
    return sum
print(myfile(path))

二 获取文件后缀:

def getfile_fix(filename):
     return filename[filename.rfind('.')+1:]
print(getfile_fix('runoob.txt'))


方法二
filename[-3:].upper()=='.PY'
方法三
#myList = x.split('.')
#print(myList[len(myList)-1])

三 检索指定路径下后缀是 py 的所有文件:

import os
import os.path

#path = 'D:/UC/'
ls = []

def getAppointFile(path,ls):
    fileList = os.listdir(path)
    try:
        for tmp in fileList:
            pathTmp = os.path.join(path,tmp)
            if True==os.path.isdir(pathTmp):
                getAppointFile(pathTmp,ls)
            elif pathTmp[pathTmp.rfind('.')+1:].upper()=='PY':
                #相等filename[-3:].upper()=='.PY':   #不是目录,则比较后缀名
                #myList = x.split('.')
                #print(myList[len(myList)-1])
                ls.append(pathTmp)
    except PermissionError:
        pass

def main():

    while True:
        path = input('请输入路径:').strip()
        if os.path.isdir(path) == True:
            break

    getAppointFile(path,ls)
    #print(len(ls))
    print(ls)
    print(len(ls))

main()



import os
import time

def getSuffix(path,suffixList,searchSuffix):
    fileList = os.listdir(path)
    for file in fileList:
        #拼接新的路径
        newPath = os.path.join(path,file)
        #判断是否是目录 是的话递归
        if os.path.isdir(newPath):
            getSuffix(newPath,suffixList,searchSuffix)
            #判断是否是py后缀的文件
        # elif newPath[newPath.rfind('.')+1:].upper() == "PY":
        elif newPath[newPath.rfind('.')+1:].upper() == searchSuffix.upper():
            suffixList.append(file)
def suffixShow(path,searchSuffix='py'):
    myList = []
    #path 当前查找数据的目录
    #myList 存储后缀数据的名字
    getSuffix(path,myList,searchSuffix)
    # print(myList)
    #判断是否有数据
    length = len(myList)
    #有数据进行显示
    if length:
        print("你所查找py后缀文件在{}目录下的个数为{} 这些文件都为...".format(path,length))
        time.sleep(2)
        for file in myList:
            print(file)
    else:
        print("在当前目录下 没有找到你要寻找后缀的文件")

while True:
    searchDir = input("请输入你要查找的目录")
    searchSuffix = input("请输入你要查找的后缀 不输入默认为py")
    #判断目录是否存在
    if os.path.exists(searchDir):
        if searchSuffix:
            suffixShow(searchDir,searchSuffix)
        else:
            suffixShow(searchDir)
    else:
        print(searchDir,"不存在 请重新输入")
        time.sleep(2)

四 列表 实现 栈的结构

特点:先进后出
#列表 实现 栈的结构
mylist = []
str1 = 'abcdefghijk'
for i in str1:
    mylist.append(i)


print(mylist.pop())
print(mylist.pop())
print(mylist)

五 将列表当做堆栈使用

​ 列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。例如

stack = []
stack.append(6)
stack.append(7)
print(stack)  #[6, 7]
stack.pop()   #7
print(stack)  #[6]
stack.pop()   # 6
print(stack)  #[]

堆栈实现 获取文件下所有的文件名

import os
path = r'C:\Users\xlg\Desktop\python安装文件'm

mylist = [] #创建 一个存储 目录的空列表
mylist.append(path) #把路径添加进去
while len(mylist) != 0: #判断我的目录列表是否为空
    mypath = mylist.pop() #将目录弹出来
    mylistdir = os.listdir(mypath) #获取该目录下的所有文件
    for filename in mylistdir: #把该目录下的文件 进行 遍历 逐个获取
        newpath = os.path.join(mypath,filename) #把每个文件 或者 目录 拼凑成一个完整的 路径
        if os.path.isdir(newpath): #判断是否是目录
            # print('目录名',filename)
            mylist.append(newpath) #是目录 就添加到 目录列表里
        else:
            print('文件名',filename) #是文件 就输出

六 队列

特点:先进先出
collections中deque的使用
deque是为了向list中删除和插入的效率更高,用法与list相似,而list自带的append和pop方法(尾部插入和删除)速度慢
import collections #引入 其它的数据类型

que = collections.deque() #使用队列
mystr = 'abcdefg'
for i in mystr:
    que.append(i)

print(que.popleft())
print(que)

七 将列表当作队列使用

​ 也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来(先进先出);但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

from collections import deque
queue = deque(["Eric", "John", "Michael"])
queue.append("Terry")           # Terry arrives
queue.append("Graham")          # Graham arrives
queue.popleft()                 # The first to arrive now leaves
#'Eric'
queue.popleft()                 # The second to arrive now leaves
#'John'
print(queue)                           # Remaining queue in order of arrival
#deque(['Michael', 'Terry', 'Graham'])

队列实现获取所有的文件名

import collections
import os
path = r'C:\Users\xlg\Desktop\python安装文件'
que = collections.deque()
que.append(path)
while len(que) != 0:
    mypath = que.popleft()
    mylist = os.listdir(mypath)

    for filename in mylist:
        newpath = os.path.join(mypath,filename)
        if os.path.isdir(newpath):
            que.append(newpath)
        else:
            print("文件名为",filename)

八 递归删除 文件

实例

path = './a'
import os

def d(path):
    List = os.listdir(path)
    for i in List:
        newPath = os.path.join(path,i)
        if os.path.isdir(newPath):
            d(newPath)
        if os.path.isfile(newPath):
            os.remove(newPath)
    os.rmdir(path)
d(path)

相关文章

  • python常用模块

    OS 模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os getcwd() 获取...

  • Python那点事儿 - OS模块

    OS 模块 OS模块是Python内置的模块,通过使用import语句可以直接调用。 os.getcwd()显示当...

  • python的os模块

    OS模块 os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os getcwd() 获取当...

  • 16-os模块

    OS模块 OS 操作系统的简称os模块就是对操作系统进行操作 使用该模块必须先导入模块: os模块中的函数 ge...

  • Python学习打call第二十五天:文件操作修改模块

    今天主要学习os模块、pathlib模块、sys模块、shutil模块、copy模块的操作~ 1.使用OS模块进行...

  • Python中的模块

    一个py文件就是一个模块 模块使用举例: 上面的import os就使用了一个内置模块os,通过os.__file...

  • 进程之os模块

    os模块 os 模块提供大量和系统相关的功能函数接口 os 模块的使用时系统相关的,在不同的系统中,可能使用方法不...

  • OS模块拾遗

    使用前 import os导入模块 os模块: os.sep 可以取代操作系统特定的路径分割符 os.linese...

  • python基础篇09-os sys math模块

    常见os模块命令: 1. os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os 2. o...

  • node中os模块

    1,OS模块中提供的方法 可以在OS模块中被调用的方法 为了帮你直观使用OS模块,下面清单中的代码包括了每个OS模...

网友评论

    本文标题:第十二章 os模块使用

    本文链接:https://www.haomeiwen.com/subject/krxvbqtx.html