一、读取文件
1.打开文件
open(文件名,打开文件的模式,encoding="UTF-8") 打开一个文件
注意点:
被打开的文件和当前文件在同一路径下,可以写文件名
被打开的文件和当前文件不在同一路径下,可以写绝对路径,
但是在写绝对路径时,记得 open(r"C:\Users\Administrator\PycharmProjects\untitled1\aaa.txt", "r", encoding="UTF-8")
转义r,
# 一般情况,如果开头打开了,那么结尾就要关闭 open与close是一对
f = open("aaa.txt", "r")#content = f.read()#print(content) # 报错,是编码的原因 'gbk' codec can't decode byte 0x9f in position 12: illegal multibyte sequence
#1.打开
f1 = open("aaa.txt", "r", encoding="UTF-8")#2.读取所有的内容
content_1 =f1.read()print(content_1) #hello python 最好的语言是python
#3.关闭文件
f.close() # 前面有open,那么结尾就得加上close
2.读取文件
read():读取文件中所有的内容
readline():每次读取一行内容
readline()按行把所有的内容,读取到一个列表中,每一行都是列表中的一个元素
#1.打开
f = open(r"C:\Users\Administrator\PycharmProjects\example\day_01\abc.txt", "r", encoding="UTF-8")#2.读取内容#第一种方式:read()读取所有的内容
content =f.read()print(content)#第二种方式:readline()每次读取一行内容
content1 =f.readline()#print(content1) # 默认读取第一行
print('1', content1) #打印文件中第一行内容
print('2', f.readline()) #打印文件中第二行内容
print('3', f.readline()) #打印文件中第三行内容#
## 假设我要读取3行,怎么读取?读取指定行数
for i in range(3):print(f.readline())#第三种方式:readlines()按行把所有的内容,读取到一个列表中,每一行都是列表中的一个元素
content3 =f.readlines()print(content3)#如果读取第七行的内容
c7 = f.readlines()[6]print(c7)#3.关闭文件
f.close()
二、写入文件
r:只读模式(read),如果文件不存在则会报错
w:写入模式(write),覆盖写入(会清楚原来的内容)如果文件不存在则会自动创建
a:写入模式(append),追加写入(在原有文件的尾部,写入新的内容),如果文件不存在则会自动创建
***扩展另外三种:
# 通常用来读取非文本模式(图片、表格、)
rb:只读模式(read),以二进制模式打开的,如果文件不存在则会报错
wb:写入模式(write),以二进制模式打开的,覆盖写入(会清楚原来的内容)如果文件不存在则会自动创建
ab:写入模式(append),以二进制模式打开的,追加写入(在原有文件的尾部,写入新的内容),如果文件不存在则会自动创建
#打开
f = open("aaa.txt", "w", encoding="utf-8")#写入内容
f.write("123456789")#关闭
f.close()print("----------------------------------------------------")#打开
f = open("aaa.txt", "a", encoding="utf-8")#写入内容
f.write("wuefbevjnklsdjcubjk")#关闭
f.close()#图片的复制
f1 = open("Devops.png", "rb") # 先读取
f2= open("copy_image.png", "wb")
con=f1.read()
f2.write(con) # 再写入
f1.close()
f2.close()
三、with操作文件
通过上下文管理器with去打开文件,操作完之后会自动关闭文件
with open("Devops.png", "rb") as f:
con=f.read()
with open("002.png", "wb") as f2:
f2.write(con)
我们在写python代码时,一般都是这种with去操作文件,对文件进行处理,因为方便好用,用的多
四、模块和包
模块:在python中,只要是以.py结尾的文件都可以称之为模块
包:包含了一个一个_init_.py文件的文件夹就可以称之为python的一个包
模块导入:
import 模块名
from 包名(如果存在多级嵌套的情况) import 模块名
(如果存在多级嵌套的情况,需要一级一级往下找)
导入模块中的某个函数或者变量:
from 模块名 import 变量名/函数
from 包名.模块名 import 变量名/函数
from xxx import xxx as 别名 (这个也常用!!!)
#模块导入#方式一:导入整个模块
importtest01#方式二、导入模块中的部分内容
from test01 importaprint(a)#这个波浪线并不是代码写错了,pycharm识别不出我们自定义的这个模块
from test01 importwork
work()#扩展#通过as给导入进来的方法或者变量重新起个名字(别名)#work也可以被叫做w1,如果两个方法或者函数名有重名的时候可以使用as,不然导入的数据会被覆盖掉
from test01 importwork as w1
w1()#同时导入模块中的多个方法和函数和变量
from test01 importa,work,numprint(a)print(num)#导入模块中所有的内容(不推荐使用)
from test01 import *
print(a)print(num)
work()#包导入#from 包名 import 模块名#from 包名.模块名 import 模块中的变量或方法#from pack01 import module1
module1.m_func1()print(module1.aa)print(module1.bb)from pack01.module1 importaa,bbprint(aa)print(bb)
其实,说了这么多,几乎就是这两条:
模块导入
方式一:import 模块名
方式二:from 模块名 import 模块中的变量或者函数
包导入:
方式一:from 包名 import 模块名
方式二:from 包名.模块名 import 模块中的变量或者函数
或者再在后面as别名
关于python中包导入的搜索路径
import sys
sys.path