2018-07-26 day09 函数模块文件及异常处理

2018-07-26  本文已影响0人  Kris_Shin

函数模块

1. 什么是模块:一个.py文件就是一个模块

2.import:可以通过import关键字导入其他的模块

import 模块名(.py文件名)

直接导入模块的时候,相当于把被导入模块里面的内容放到了import的位置

3.怎么使用模块中的内容?什么内容可用

  • import 模块名 → 导入模块所有内容
  • 模块名. 使用模块中的内容

在模块中声明全局变量都可以使用(普通变量,函数,类)

import Other

Other.funOther()
print(Other.name)
print(Other.aa)

4.from 模块 import 内容列表 → 导入模块指定内容

使用导入的内容时,不用再加模块名.

from Other2 import *  # 导入Other2.py 所有内容

fun2Other()

5.阻止被导入模块中不需要的代码被执行

  • 一般情况下,除了函数的声明和类声明以外,其他的代码都放到if中(或者if的函数中)
  • name:每个模块自带的一个属性,是用来保存当前这个模块的名字,但是当正在执行当前模块的时候,这个属性的值是固定的'main'
print('___', Other.__name__)
print(__name__)

此函数下的内容不会被其他模块导入执行

if __name__ == '__main__':
    name2 = 999
    print(name2)
  • 使用 as重命名
  • import 模块名 as 新名字
  • from 模块名 import 内容 as 新名字
import math as mm
from math import sqrt as sq
print(mm.sqrt(144))
print(sq(169))

case:使用一个模块用来管理所有和形状相关的功能(求圆的周长/面积,求举行周长和面积)

import shape

shape.getArea()
shape.getLength()

基本文件操作

1.打开文件

2.文本文件的读操作

# open('D:\MyCourse\Cultivate\day09\test.txt')
filePath = r'D:\MyCourse\Cultivate\day09\test.txt'
open('./day09/test.txt')
open('./day09/text/test2.txt')

# 2.1 打开文件

注意:以读的方式打开文件,如果这个文件不存在,会报FileNotFoundError;
以写的方式打开,如果不存在则创建新文件

# 2.1打开文件,返回文件句柄
f1 = open('./day09/test.txt', 'r', encoding='utf-8')
# 2.2读文件(获取文件内容)
content = f1.read()  # 文件.read():获取文件内容,并且返回 n:设置读的长度
print(content, type(content))
# 2.3 关闭文件
f1.close()

3.文本文件的读操作

# 3.1 打开文件

w操作会覆盖之前的内容,没有文件则会创建
a在原本内容后面添加新的数据,没有文件则会创建

f2 = open('./day09/text/test2.txt', 'a', encoding='utf-8')
# 3.2 写操作
f2.write('Hello world')
# 3.3 关闭文件
f2.close()

4.二进制文件的读写操作

f3 = open('./day09/14.jpg', 'rb')
# 读文件
imageData = f3.read()
# bytes:python中二进制数据对应的数据类
print(type(imageData))
# 关闭文件
f3.close()
f4 = open('./day09/4.png', 'wb')
f4.write(imageData)
f4.close()

5.通过with关键字操作文件

with open() as 文件句柄:
    文件操作
  • 在文件操作结束后自动关闭文件
with open('./day09/111.MP4', 'rb') as f5:
    videoData = f5.read()
with open('./day09/666.avi', 'wb') as f6:
    f6.write(videoData)


if __name__ == '__main__':
    main()

json文件

json文件(文本):文件后缀是.json,内容必须是json格式

最外层只能是字典/数组/字符串

1.json文件读操作

with open('./day09/test.json', 'r', encoding='utf-8') as f1:

# 直接使用read()获取到的是字符串数据,包含json文件的所有内容包括注释等
content = f1.read()
print(type(content), content)

# load(文件对象):获取指定json文件中的内容 返回值的类型是json文件最外层对应的数据类型
content = json.load(f1)
print(type(content), content, content['score'][1])

2.json文件写操作

with open('./day09/test1.json', 'w', encoding='utf-8') as f2:
'''
#写数据
dump(内容,文件句柄)
'''
writeContent = [{'name': '001', 'age': 10}, {'name': '002', 'age': 15}]
json.dump(writeContent, f2)
# case:输入学生的姓名和电话,保存到本地,(下次启动还在)
try:
    with open('./day09/info.json', 'r') as f4:
        list1 = json.load(f4)
except Exception:
    list1 = []

name = input('name:')
tel = input('tel:')
info = {'name': name, 'tel': tel}
list1.append(info)
with open('./day09/info.json', 'w') as f3:
    json.dump(list1, f3)
print(list1)

3.json模块的其他操作

content = json.loads('"aaa"', encoding='utf-8')  # 字符串格式必须是json格式
print(content, type(content))

# dumps(对象)
# 将json对象转换成json字符串
# 字典/列表转换成json字符串

content = json.dumps(['aaa', 2, True])
print(content, type(content))


if __name__ == '__main__':
    main()

异常处理

try:
    需要捕获异常的代码
except (错误类型)):
    如果出现异常会执行的代码/捕获到指定错误类型才执行的代码
def main():
    try:
        with open('aaa.txt') as f:
            pass
    except Exception:
        print('错了')

if __name__ == '__main__':
    main()

作业

主函数文件

from Util import *  # 导入所有的方法
import os  # 导入os来拼接路径


def main():
    content = '"aaaaa"'  # 单引号套双引号字符串,符合json格式
    url = os.path.join(os.path.join(os.getcwd(), 'day09'), 'test.txt')  # 拼接路径
    # 调用函数以及查看结果 
    writeFile(content, url)
    readFile(url)
    print(str2Json(content))
    print(obj2Json({'a': 1, 'b': 2}))
    print(getC(a=1, b=2))
    print(getC(r=3))
    print(getArea(a=1, b=2))
    print(getArea(r=4))


if __name__ == '__main__':
    main()

Util.py (方法很简单就不注释了)


'''
 @Author: Kris Shin
 @Date: 2018-07-26 20:21:59
 @Last Modified by: Kris Shin
 @Last Modified time: 2018-07-26 20:21:59
'''
import math
import json


def readFile(url):
    try:
        with open(url) as f:
            list1 = f.read()
            print(list1)
            return list1
    except FileNotFoundError:
        print('路径错误')


def writeFile(data, url):
    with open(url, 'w') as f:
        f.write(data)
        print('写入完成')
        return 1


def getArea(a=0, b=0, r=0):
    if a or b:
        return a * b
    if r:
        return math.pi * r**2
    

def getC(a=0, b=0, r=0):
    if a or b:
        return 2 * (a + b)
    if r:
        return 2 * math.pi * r


def str2Json(data):
    return json.loads(data, encoding='utf-8')


def obj2Json(data):
    return json.dumps(data)
上一篇 下一篇

猜你喜欢

热点阅读