学习Python第10天_包&os模块

仅记录个人学习Python所学,学识浅薄,若有错误欢迎指出。文章可能会不太完善,后续可能会继续更新。

一、包

包:初期理解为文件夹

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

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

创建方式:选中工程,创建Python package
包存在的意义:在团队开发的过程中,为了解决文件命名冲突的问题,只要保证最上层的包命名不相同,就不会与别人的发生冲突

二、模块

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

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

优点:

a.提高了代码的可维护性

b.提高了代码的复用性【当一个模块被完成之后,可以在多个文件中使用】

c.引用其他的模块【第三方模块】

d.避免函数名和变量的命名冲突

import os
# os 模块     operation system 操作系统
#
print(os.name)
# nt----->Windows
# posix------>Linux, Mac os

# 环境变量
print(os.environ)

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

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

# 掌握
# listdir():获取指定路径下的所有文件或目录的名字,返回一个列表
print(os.listdir(r'C:\Users\xx\Desktop\Python2004\week03\day11\code'))

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

# 删除目录  rmdir():只能删除空目录
# os.rmdir('giao哥')
# os.rmdir('a')   # [WinError 145] 目录不是空的。: 'a'

# 删除文件
# os.remove('a.txt')

# 重命名
# os.rename('a', 'aa')
# os.rename(r'aa/a.txt', r'aa/1.txt')

# 文件属性(了解)
# print(os.stat('aa/1.txt'))

# os.path
# os.path.join() : 将多个路径拼接
# print(os.path.join(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\aa', r'b\1.txt'))

# os.path.split() : 拆分路径
# print(os.path.split(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\aa'))

# os.path.splitext(): 拆分文件名和拓展名
# print(os.path.splitext('ccc.py'))   # ('ccc', '.py')

# os.path.getsize(): 获取文件大小
print(os.path.getsize(r'C:\Users\xx\Desktop\Python2004\week03\day11\code\day_11test01.py'))

# os.path.abspath(): 获取指定文件的绝对路径
print(os.path.abspath('1.txt'))

# 当前所在文件路径  __file__:当前文件名
print(os.path.abspath(__file__))


dir_path = r'C:\Users\xx\Desktop\Python2004\week03\day11\code'
file_path = r'C:\Users\xx\Desktop\Python2004\week03\day11\code\day_11test01.py'

# 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


# 查找指定目录下的所有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)
        # 是否为文件
        if os.path.isfile(file_path):
            _, file_type = os.path.splitext(file_path)
            if file_type == '.py' or file_type == '.txt':
                print(file_name)


get_file(r'C:\Users\xx\Desktop\Python2004\week03\day11\code')

遍历文件夹中文件

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\xx\Desktop\Python2004\week03\day11\code\newdir')

import math
# 包:    带有__init__.py文件的文件夹
# 模块:   一个模块就是一个Python文件
#       1. 内置模块:Python提供的模块
#       2. 自定义模块:自己写的模块
#       3. 第三方模块

# 导入模块
# 1.使用import
# 2.使用from-import
#   import

# 自定义模块
import module1

print(module1.name, module1.age)

module1.show('蔡徐坤', 25)

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

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

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

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

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

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

from package1.m2 import sex
print(sex)

module

import math

print('hello')

name = '鹿晗'

age = 30


def show(name, age):
    print(name, age)


# show(name, age)

print(__name__)
# 1.如果直接运行当前文件,则打印:__main__

# 2.如果是在其他文件导入当前模块运行,则打印 :module1
#                                       模块名

if __name__ == '__main__':
    # 做测试调用
    show('mask', 45)
    # 查看包里所有变量名,函数名等
    print(dir(math))

三、使用pip安装第三方模块

这里使用cmd或pycharm中的Terminal 都可以

#   如何安装或下载第三方模块
#   1.使用pycharm安装
#   2.使用pip安装
#       pip install requests    安装
#       pip uninstall requests  卸载
#       pip list    显示所有包
#       pip freeze  显示自己安装的包(不包含pip和setuptools)
#       pip -V  查看版本
#       pip show requests   查看详情
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值