Day16 Python课程学习内容

Day16 Python课程学习内容

1. 模块

  • 模块化指将一个完整的程序分解成一个个的小模块。
  • 不采用模块化使得文件显得臃肿,阅读起来十分不方便。
  • 模块化优点:1.方便开发与维护 2. 模块可以进行复用。

(1).模块的创建:一个.py文件就是一个模块。

# -------------------------------------------------------------------------------------

'''test_m.py''' # 创建一个简单的模块,且模块文件名为test_m.py

print('This is a module file.')
# This is a module file.

# 为满足在其他文件内使用,即test_m.py使用到其他的文件中.
# 在一个文件中引入外界模块。

# ---------------------------------------分割-------------------------------------------

'''module.py''' # 创建一个文件,用来引用test_m.py模块。
import test_m

# This is a module file. 证明了test_m.py模块引入成功。
# 可以引入多次模块,但只会运行一次。

print(test_m)
# <module 'test_m' from '.......'> 模块 模块名 从何处引入。

# ---------------------------------------分割-------------------------------------------

# 为方便使用,将引入模块的名称,简写化。
import test_m as test

print(test_m)
'''
NameError: name 'test_m' is not defined
''' # 未找到。 原因:已将test_m 改名成test

print(test)
# <module 'test_m' from '.......'> 
  • 其他现象
  • __name__ 作用: 可以返回当前模块文件的名称。
# classroom Case

'''test_m.py'''
print(__name__)
# __main__ 		输出为:__main__
# 如果当前运行文件为模块文件,则返回 __main__

'''module.py'''
import test_m
# test_m 返回模块名

(2).模块的使用

  • 访问模块中的变量,语法是:模块名.变量名。
# classroom Case

'''test_m.py'''
# 创建变量 number1 和 number2
number1 = 123
number2 = 345

# 创建函数 test1() 和 test2()
def test1():
    print('Hello World')
def test2():
	print('Hello Python')

# 创建类
class Person:
    def __init__(self):
        self.name = 'Sam'
p = Person()

'''module.py'''
import test_m
print(test_m.number1, test_m.number2) 
#访问模块中的变量。
# 123 345

test_m.test1() # Hello World
test_m.test2() # Hello Python

# 访问模块中的实例对象
p = test_m.Person()
print(p.name)
# Sam
  • 解决测试
# classroom Case
'''test_m.py'''
def test1():
    print('Hello World')
def test2():
	print('Hello Python')
if __name__ == '__main__'
	test1()
    test2()
# 用来判断模块中是否正确。也不会再主文件中出现

'''module.py'''
import test_m
test_m.test1() # Hello World
test_m.test2() # Hello Python
  • 优化代码 from 模块名 as 模块别名
# classroom Case
'''test_m.py'''
number1 = 123
number2 = 345
def test1():
    print('Hello World')
def test2():
	print('Hello Python')
class Person:
    def __init__(self):
        self.name = 'Sam'
'''module.py'''
from test_m import Person # 单独使用模块中的一部分
print(test_m)
'''
NameError: name 'test_m' is not defined
''' # 未找到。直接引用Person
p1 = Person
print(p1.name)

'''
from 模块名 import 变量1,变量2,变量3.....
'''
from test_m import Person,test1,test2,number1 # 一次性调用多个指定的

'''
from 模块名 import * 
'''
from test_m import * # 调用模块全部的

特殊情况: 主模块和模块中有重复的函数名。

  • 解决方法: from 模块名 import 变量 as 别名
# classroom Case

'''test_m.py'''
def test2():
	print('Hello Python')


'''module1.py'''
def test2():
    print('Hello Sam')
from test_m import *
test2()
# Hello Python

'''module2.py'''
from test_m import *
def test2():
    print('Hello Sam')
test2()
# Hello Sam

'''
解决方法:
from 模块名 import 变量 as 别名
'''
from test_m import test2 as new_test2

2. 文件

​ (1).打开文件

  • file() 通过Python程序对计算机进行增删改查等各种操作。

  • open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

  • file 要打开的文件名(路径)

  • open()打开一个文件,可以将文件分成2种类型:1.纯文本文件(使用UTF-8编写的纯文本文件)2.二进制文件(图片,音频,视频…)

'''demo.txt'''创建一个demo.txt文件

qwertyuiop
asdfghjkl
zxcvbnm
'''module.py'''

file_name = 'demo.txt' # 创建一个变量名来存储文件的名字

open(file_name)
file_obj = open(file_name)
print(file_obj)
'''
<_io.TextIOWrapper name='demo.txt' mode='r' encoding='cp936'>
''' # 对象,证明已经打开。
  • 如果当前打开文件不在同一地址。
'''demo.txt''' 在E盘

qwertyuiop
asdfghjkl
zxcvbnm
'''module.py''' # 在C盘

file_name = r'E:\demo.txt' # 创建一个变量名来存储文件的名字,绝对路径
open(file_name)

​ (2).读取文件

  • 读取文件的内容 read()方法。会将读取的内容保存为字符串返回。
  • read() 方法会一下子读取所有的内容。
  • 隐患:读取较大文件时,会使内存使用较大。
'''demo.txt'''

qwertyuiop
asdfghjkl
zxcvbnm
'''module.py'''
file_name = 'demo.txt' 

file_obj = open(file_name)
content = file_obj.read()
print(type(content),content)
'''
<class 'str'> qwertyuiop
asdfghjkl
zxcvbnm
'''

  • 读取较大文件时,会使内存使用较大。故文件较大时,不好直接使用read()
  • 可以认为size是指定的一个值,这样read()会读取指定数量的字符,每一次都是上次读取的位置开始。
  • 如果字符的数量小于size,则会读取所有字符。
  • read(size = -1)默认读取所有文件
'''demo.txt'''

白日依山尽
黄河入海流
欲穷千里目
更上一层楼
'''module.py'''

file_name = 'demo.txt' 
try:
	with open(file_name,encoding = 'utf-8') as file_obj:
        # 解决文件中有中文
    	# print(file_obj.read())
    	content = file_obj.read(6)
    	print(content) # 白日依山尽
except FileNotFoundError:
    print(f'{file_name}文件不存在)
          

​ (3).关闭文件

  • close()方法,来关闭文件
'''demo.txt'''

qwertyuiop
asdfghjkl
zxcvbnm
'''module.py'''
file_name = 'demo.txt' 

file_obj = open(file_name)
content = file_obj.read()
print(type(content),content)

file_obj.close() # 关闭文件
  • with … as … 专门为文件设置的,上下文,内置关闭文件的功能。
  • 一旦with语句结束文件会自关闭
'''demo.txt'''

qwertyuiop
asdfghjkl
zxcvbnm
'''module.py'''

file_name = 'demo.txt' 

with open(file_name) as file_obj:
    print(file_obj.read())
'''
qwertyuiop
asdfghjkl
zxcvbnm
'''
print(file_obj.read()) # ValueError: I/O operation on closed file. with内置close关闭文件。
'''module.py'''

file_name = 'demo.txt' 
try:
	with open(file_name) as file_obj:
    	print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name}文件不存在)

  • 当文本文件中有中文
'''demo.txt'''

你好呀
Python
'''module.py'''

file_name = 'demo.txt' 
try:
	with open(file_name,encoding = 'utf-8') as file_obj:
        # 解决文件中有中文
    	print(file_obj.read())
except FileNotFoundError:
    print(f'{file_name}文件不存在)
          

  • 完善代码,逐行阅读。
file_name = '*******'
try:
	with open(file_name, encoding = 'utf-8') as file_obj:
	chunk = 100
	while True:
		content = file_obj.read()
		if not content:
			break
		print(content)
except FileNotFoundError:
	print(f'{file_name}文件不存在)

  • 其他的读取方式
  • readline() 读取一行的内容
file_name = '*******'

with open(file_name, encoding = 'utf-8') as file_obj:
	# print(file_obj.read())
	print(file.obj.readline())
	print(file.obj.readline(),end = '')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值