二. python的os模块

Posted sup-to

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二. 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")
技术图片
# 深度遍历  利用 进栈 和 出栈  的知识



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")
os 栈

二 .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‘]

 

 
 

 


 

以上是关于二. python的os模块的主要内容,如果未能解决你的问题,请参考以下文章

Python 常用模块 -- collections模块,time模块,random模块,os模块,sys模块

Python基础模块

Python之初识模块二

python之os模块

Python OS模块介绍

python模块基础之OS模块