Python Day 5

文件操作

编码

编码技术即翻译的规则的集合,记录了内容和二进制之间互相转换的逻辑

编码技术中,目前最常使用的是UTF-8编码

打开文件

python中可以使用open()函数打开一个已存在文件或创建一个新文件

# name: 文件名,可以包含具体路径
# mode: 访问模式,取值范围包括'r'只读,'w'写入,'a'追加
# encoding: 编码格式,常用UTF-8
open(name, mode, encoding)

open()函数将返回一个文件对象,可用相应的变量接收,从而创建一个文件对象

关闭文件

对文件完成操作后要记得用close()关闭文件,即关闭文件对象,否则这个文件将一直被程序占用

读取文件

方法描述
文件对象.read(num)读取num字节的内容,不指定则读取全部
文件对象.readline()读取一行
文件对象.readlines()读取全部行,并按照行形成列表
for line in 文件对象以行为单位遍历文件
with open() as f用with open()方法打开文件,可以自动关闭

写入文件

写入操作流程遵循三部曲:

# 1. 以写入模式打开文件
f = open('111.txt', 'w')

# 2. 写入文件
f.write('hello')

# 3. 刷新
f.flush()

说明:

  • 第二步调用write()函数时,参数并未真正写入文件,而是暂存在程序内存(缓冲区)中
  • 第三步调用flush()函数时,参数才真正写入文件
  • 通常执行多个write(),最后统一flush(),可以避免频繁操作硬盘,导致效率低下
  • 如果文件存在,使用'w'模式,会将原有内容清空

追加文件

追加文件的流程和写入基本相同,唯一不同之处在于模式改为了'a'模式

  • 在追加模式下,如果文件存在,不会清空原文件,而是在文件最后追加写入文件

异常

异常处理

python中通过对可能会出现的异常进行捕获来处理异常

基本语法如下:

try:

    可能产生异常的代码(通常只放一行代码)

except:

    捕获到异常执行的代码

根据使用场景不同,语句也可稍作修改:

捕获常规异常

try:
    f = open('111.txt', 'r')    # 以只读方式打开不存在的文件
except:
    f = open('111.txt', 'w')

捕获指定异常

try:
    print(name)
except NameError as e:    # 捕获指定的NameError类型异常,将其视为一个异常对象
    print("name变量名称未定义错误")
  • 注:如果发生的异常与指定类型不一致,则无法捕获

捕获多个异常

将多个异常类型的名字以元组的形式放在except关键字后面:

try:
    print(1/0)
except (NameError, ZeroDivisionError):
    print("0不能作除数")

捕获异常并输出描述信息

try:
    print(1/0)
except (NameError, ZeroDivisionError) as e:
    print(e)    # 打印异常对象

捕获所有异常

try:
    print(1/0)
except Exception as e:    # 异常大类Exception
    print(e)

else关键字

else表示无异常发生时执行的代码

try:
    print(1)
except Exception as e:
    print(e)
else:
    print("无异常发生")

finally关键字

finally表示无论如何都要执行的代码

try:
    f = open('111.txt', 'r')
except Exception as e:
    f = open('111.txt', 'w')
else:
    print("无异常发生")
finally:
    f.close()

异常具有传递性

假设,f1()中发生异常,f2()调用了f1(),则此时异常从f1()传递到了f2(),在任意一个函数里捕获异常即可

根据异常的传递性原理,我们可以在main()函数中设置异常捕获,因为无论哪里发生异常最终都会传递到main()函数,这样就能确保所有异常均被捕获

模块与包

模块

什么是模块?

模块就是以.py结尾的python文件,内含各种类、方法、变量等,可以导入进行使用

导入模块的格式如下:

[ from 模块名 ] import [ 模块 | 类 | 变量 | 函数 | * ] [ as 别名 ]

其中[]内的表示可以省略

  • 若出现同名功能,调用时使用的是后导入进来的功能

自定义模块

每个python文件都可以作为模块导入

__main__变量

def add(x, y):
    return x + y

# 这条语句下的内容保证只在当前文件中执行,其他导入该模块的文件中则不执行
if __name__ == '__main__':
    add(1, 1)

__all__变量

'__all__'变量存放一个数组,如果一个文件中有'__all__'变量,则其他文件导入该模块时只能使用这个列表中的元素,示例如下:

module1.py

__all__ = ['funA']

def funA():
    pass

def funB():
    pass

module2.py

from module1 import *

# module2中只能访问到funA()
funA()

注意:__all__变量只在使用' from ... import * '语句时生效

若将module2.py改为:

import module1

module1.funA()
module1.funB()

则可以访问funB()

什么是包?

包相当于一个文件夹,该文件夹下包含一个__init.py文件,这个文件可包含多个模块文件

本质上说,包也是模块

导入包有两种方式:

方式1:import 包名.模块名

此时调用的写法为:包名.模块名.目标

方式2:from 包名 import *

此时调用的写法为:模块名.目标,而且这种方式下必须在__init__.py文件中添加__all__变量以控制允许导入的模块列表

第三方包

常见的第三方包:

  • numpy包:用于科学计算
  • pandas包:用于数据分析
  • pyspark、apache-flink包:用于大数据计算
  • matplotlib、pyecharts包:用于图形可视化
  • tensorflow包:用于人工智能

关于下载第三包,我们可以在命令行使用' pip install 包名 '语句来下载,但速度较慢

通常也可以在PyCharm中直接下载,这里不再演示,感兴趣的小伙伴可以自行搜索,网上有教程

结语

python的基础学习到这里就先告一段落啦,这几天只是简单过一遍python的皮毛,要想真正掌握好还需要通过实践来巩固,进而提升技术

下一阶段将开启机器学习的新篇章,继续加油吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值