学习Python(10)os模块&遍历目录&包和模块&第三方模块&name属性和dir函数

学习Python(10)os模块&遍历目录&包和模块&第三方模块&name属性和dir函数

os模块

os模块

os : operation system (操作系统),用于获取系统的功能,主要用于操作文件或者文件夹

判断操作系统

import os

print(os.name)
# nt----->Windows
# posix------>Linux, MacOS

查看环境变量

print(os.environ)
print(os.environ.get('PATH'))

curdir: current directory 当前目录

# . 表示当前目录
# .. 表示上级目录
print(os.curdir)  # .

当前目录(路径)

绝对路径: 从磁盘根目录开始的完整路径
相对路径: 从当前目录(或项目目录)开始的路径
print(os.getcwd())
# C:\Users\ijeff\Desktop\Python2004\day11\code

listdir()

获取指定路径下的所有文件或目录的名字, 返回一个列表
print(os.listdir(r'C:\Users\ijeff\Desktop\Python2004\day11\code'))
# ['01_复习.py', '02_os模块.py', '昨日作业']

新建目录

os.mkdir('giao哥')
os.makedirs('a/b/c')  # 可以递归创建目录

删除目录

os.rmdir("giao哥")
os.rmdir('a')  # 报错,只能删除空目录

删除文件

os.remove('a.txt')

重命名

os.rename('a', 'aaa')
os.rename(r'aaa/bbb.txt', 'aaa/bbb.py')

文件属性

print(os.stat('aaa/bbb.py'))

os.path

将多个路径拼接

os.path.join()
print(os.path.join(r'C:\Users\ijeff\Desktop\Python2004\day11\code\aaa', 'bbb.py'))
# => C:\Users\ijeff\Desktop\Python2004\day11\code\aaa\bbb.py

拆分

os.path.split()
print(os.path.split(r'C:\Users\ijeff\Desktop\Python2004\day11\code\aaa'))
# => ('C:\\Users\\ijeff\\Desktop\\Python2004\\day11\\code', 'aaa')

将文件名和扩展名拆分

os.path.splitext()
print(os.path.splitext('ccc.py'))
# => ('ccc', '.py')

获取文件大小

os.path.getsize()
print(os.path.getsize(r'C:\Users\ijeff\Desktop\Python2004\day11\code\02_os模块.py'))

获取指定文件的绝对路径

os.path.abspath()
print(os.path.abspath('a.txt'))

获取文件名

--file__
print(os.path.abspath(__file__))

文件或目录是否存在

os.path.exists()
print(os.path.exists(dir_path))
print(os.path.exists(file_path))

是否为文件

os.path.isfile()
print(os.path.isfile(dir_path))  # False
print(os.path.isfile(file_path))  # True

是否为目录

os.path.isdir()
print(os.path.isdir(dir_path))  # True
print(os.path.isdir(file_path))  # False

父目录

os.path.dirname()
print(os.path.dirname(dir_path))

文件名

os.path.basename()
print(os.path.basename(file_path))

遍历目录

案例一:

import os


# 遍历目录: 深度遍历
def search_dir(path):

    # 1.获取目录下的所有文件名或目录名
    file_list = os.listdir(path)

    # 2.遍历每个子目录和子文件
    for file in file_list:
        # 3.获取子文件的绝对路径(完整路径)
        file_path = os.path.join(path, file)

        # 4.判断文件还是目录
        if os.path.isfile(file_path):
            print("文件名:", file)
        else:
            print("目录名:", file)

            # 继续找字目录下的所有文件和目录
            search_dir(file_path)


search_dir(r'C:\Users\ijeff\Desktop\Python2004\day11\code\newdir')

案例二:


import os


# 查找指定目录下的所有py文件和txt文件名称
def get_file(path):
    if not os.path.exists(path):
        return "文件不存在"

    file_list = os.listdir(path)
    # print(file_list)

    for file_name in file_list:
        # 获取绝对路径(完整路径)
        file_path = os.path.join(path, file_name)
        # print(file_path)

        # 判断是否为文件
        if os.path.isfile(file_path):
            _, file_type = os.path.splitext(file_path)
            print(file_type)
            if file_type=='.py' or file_type=='.txt':
                print(file_name)


get_file(r'C:\Users\ijeff\Desktop\Python2004\day10\code')

包和模块

包:初期理解为文件夹

作用:

一种管理Python模块命名空间的形式,采用"点语法"   os.path

包和文件夹之间的区别:Python的包中有一个特殊的文件__init__.py文件,前期里面不写任何内容,但是,就是为了告诉编译器,当前这个目录不是普通目录,是一个包

创建方式:选中工程,创建Python package

# 包
# import package1.m2     # 不推荐
# print(package1.m2.sex)

# from package1 import m2
# print(m2.sex)

from package1.m2 import sex
print(sex)

包存在的意义

在团队开发的过程中,为了解决文件命名冲突的问题,只要保证最上层的包命名不相同,就不会与别人的发生冲突

模块:

为了解决维护问题,一般情况下,在一个完整的项目中,会将特定的功能分组,分别放到不同的文件中,在使用的过程中,可以单独维护,各个不同的文件之间互不影响,每个.py文件就被称为一个模块,通过结合包的使用来组织文件

封装思路: 函数 => 类 => 模块 => 包 => 项目

优点:

a.提高了代码的可维护性
b.提高了代码的复用性【当一个模块被完成之后,可以在多个文件中使用】
c.引用其他的模块【第三方模块】  
d.避免函数名和变量的命名冲突

使用import导入模块

import math
# import os, random

# 自定义模块
# import module1
# import module1
#
# print(module1.name, module1.age)
# module1.show('蔡徐坤', 25)

使用from-import导入模块

from module1 import name, age, show
# 模糊导入: 导入所有
# from module1 import *

print(name, age)
show('张艺兴', 30)

别名: 小名

import random as rd
print(rd.random())  # 不可以使用原名

from random import randrange as rr
print(rr(1,3))

总结:

在python中,每个py文件其实都是一个模块,如果跨模块调用函数,则采用导入的方式
将不同的功能进行划分,调用函数的时候相对比较方便的

第三方模块

如何安装或下载第三方模块

1. 使用pycharm安装
2. 使用pip命令
#       pip -V  查看版本
#       pip install requests 安装
#       pip uninstall requests 卸载
#       pip list 显示所有包
#       pip freeze 显示自己安装的包(不包含pip和setuptools)
#       pip show requests  查看详情

name属性和dir函数

name属性

__name__的作用

如果不想让模块中的某些代码执行,可以通过属性仅仅调用程序中的一部分功能
【写在if判断中的代码只有当前模块被执行的时候才会被执行,检测到是其他的文件在使用当前的模块,则if语句中的代码不会被执行】
def fun1():
 print("aaa")

def fun2():
 print("bbb")

def fun3():
 print("ccc")


#作用:写在下面判断中的代码,只有当前模块运行的时候才会被执行【起到屏蔽的作用】
if __name__ == "__main__":
 fun1()
 fun2()
 fun3()

dir函数

newdir
import math,moduleTextDemo01

#获取指定模块里面的所有的内容
newdir
print(dir(math))
print(dir(moduleTextDemo01))

猜你喜欢

转载自blog.csdn.net/qq_43284558/article/details/107772875