greatX

异常处理

  关键字, try  except finally 

import time
import sys

filename = input(\'请输入文件名: \')
try:
    with open(filename) as f:  # 使用with, 作用范围最后会自动关闭资源 ,和主动调用 f.close()相同
        lines = f.readlines()
        for line in lines:
            print(line.rstrip())
            time.sleep(0.5)
except FileNotFoundError as msg:
    print(\'无法打开文件:\', filename)
    print(msg)
except UnicodeDecodeError as msg:
    print(\'非文本文件无法解码\')
    sys.exit()  # exit函数实质上是引发了SystemExit异常
finally:
    # 此处最适合做善后工作, 如释放资源
    print(\'不管发生什么我都会执行\')
View Code

 

 

文件操作

File 对象

def open(file, mode=\'r\', buffering=None, encoding=None, errors=None, newline=None, closefd=True)
  • file: 文件路径
  • mode: 操作模式
    \'r\' 读取(默认)
    \'w\' 写入
    \'x\'  写入,如果文件已经存在,会产生异常
    \'a\' 追加,将内容写到已有文件的末尾
    \'b\' 二进制模式
    \'t\' 文本模式
    \'+\' 更新,既可以读,也可以写
  • encoding: 编码格式,一般使用utf-8
  • errors: 报错级别
  • newline: 区分换行符
file.close()  关闭文件,释放文件资源,之后不能再进行读写操作
file.write(str) 将字符串写入文件, 返回的是写入的字符长度
file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则自己加入每行的换行符
file.readline() 返回当前索引的整行内容
file.readlines()返回所有行并返回结果

 

文本文件

import time


def main():
    # 一次性读取整个文件内容
    with open(\'致橡树.txt\', \'r\', encoding=\'utf-8\') as f:
        print(f.read())

    # 通过for-in循环逐行读取
    with open(\'致橡树.txt\', \'r\', encoding=\'utf-8\') as f:
        for line in f: # 每0.5秒输出一行
            print(line, end=\'\')
            time.sleep(0.5)
    print()

    # 读取文件按行读取到列表中
    with open(\'致橡树.txt\', \'r\', encoding=\'utf-8\') as f:
        lines = f.readlines()  # 读取行组成一个集合
    print(lines)

    # 将100以内的偶数写入文件 prime.txt
    with open(\'prime.txt\', \'w\') as f:
        for num in range(2, 100):
            if num % 2 == 0:
                f.write(str(num) + \'\n\')
    print(\'写入完成!\')


if __name__ == \'__main__\':
    main()
View Code

图片文件

# 引入base64模块
import base64

# mode = rb, 以二进制模式读取
with open(\'mm.jpg\', \'rb\') as f:
    data = f.read() # data 类型 bytes
    print(\'字节数:\', len(data))
    # 将图片处理成BASE-64编码
    print(base64.b64encode(data))

# 将二进制数据保存成图片
with open(\'girl.jpg\', \'wb\') as f:
    f.write(data)
View Code

Json

import json
import requests

# 使用模块requests, 请求一个json数据
resp = requests.get(\'http://api.tianapi.com/guonei/?key=APIKey&num=10\')
# 使用 json.loads 方法, 将json格式的字符串,转成dict 字典类型数据
data_model = json.loads(resp.text) 
print(data_model)

# 定义一个字典集合
teacher_dict = {\'name\': \'白元芳\', \'age\': 25, \'title\': \'讲师\'}
# 将字典数据转成 字符串
json_str = json.dumps(teacher_dict)
View Code

csv文件

# 引入 csv 模块
import csv


def read():
    try:
        with open(\'example.csv\') as f:
            reader = csv.reader(f)
            data = list(reader)
    except FileNotFoundError:
        print(\'无法打开文件:example.csv\')
    else:
        for item in data:
            print(\'%-30s%-20s%-10s\' % (item[0], item[1], item[2]))


def write():
    try:
        with open(\'example1.csv\', \'w\') as f:
            writer = csv.writer(f)
            writer.writerow([\'zhangsan\', 16, \'male\'])
            writer.writerow([\'lisi\', 18, \'male\'])
            writer.writerow([\'huahua\', 16, \'female\'])

    except BaseException as e:
        print(\'无法写入文件:example1.csv\')
    else:
        print(\'保存数据完成!\')


if __name__ == \'__main__\':
    read()
    write()
View Code

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-01-28
  • 2022-02-08
  • 2021-12-31
  • 2023-02-20
  • 2021-05-30
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-10-20
  • 2022-12-23
  • 2022-12-23
  • 2021-12-08
  • 2022-01-27
  • 2021-12-14
相关资源
相似解决方案