文件
1.打开文件
open(file, mode='r', buffering=-1, encoding_=None, errors=None, newline=None, closefd=True, opener=None)
#eg:
# 创建一个变量,来保存文件的名字
# 如果目标文件和当前文件在同一级目录下,则直接使用文件名即可
file_name = 'demo.txt'
# 在windows系统使用路径时,可以使用/来代替 \
# 或者可以使用 \\ 来代替 \
# 或者也可以使用原始字符串 r
file_name = 'hello\\demo.txt'
# file_name = r'hello\demo.txt'
# 表示路径,可以使用..来返回一级目录
file_name = '../hello/demo.txt'
# 如果目标文件距离当前文件比较远,此时可以使用绝对路径
# 绝对路径应该从磁盘的根目录开始书写
#备注: .. 表示返回上一级目录
#在实际工作里面,要求写到同一个包内,方便管理
如何解决?
大学会利用DBUtils封装
企业会利用 C3p0 JNDI Database Mybatis
备注:利用以上操作,资源就不会泄露,服务器读取数据的速度快、性能高、安全!
2.关闭文件
close()
file_name = 'hello'
try:
with open(file_name) as file_obj :
print(file_obj.read())
except FileNotFoundError:#文件读取不到的时候,因此需要抛出异常,捕获异常,让程序更加安全。
print(f'{file_name} 文件不存在~~')
except FileExistsError:
print(f'{file_name}文件已存在')
在python里面避免频繁close的方法:
利用with …as:通过with…as操作可以在程序执行完成之后自动关闭IO操作。此时这个文件只能在with中使用,一旦with结束则文件会自动close()
3.读取文件
1.read () 来读取文件中的内容
file_name = 'demo2.txt'
try:
# 处理文本文件时,必须要指定文件的编码,(如果导入文件中有中文,而没有设置文件编码格式,会出现乱码)
with open(file_name,encoding='utf-8') as file_obj:
# 通过 read() 来读取文件中的内容
# 如果直接调用read()它会将文本文件的所有内容全部都读取出来
# 如果要读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏
# 所以对于较大的文件,不要直接调用read()
# help(file_obj.read)
# read()可以接收一个size作为参数,该参数用来指定要读取的字符的数量
# 默认值为-1,它会读取文件中的所有字符
# 可以为size指定一个值,这样read()会读取指定数量的字符,
# 每一次读取都是从上次读取到位置开始读取的
# 如果字符的数量小于size,则会读取剩余所有的
# 如果已经读取到了文件的最后了,则会返回''空串
# content = file_obj.read(-1)#读取全部内容
content = file_obj.read(6)
# print(content)
# print(len(content))
except FileNotFoundError :
print(f'{file_name} 这个文件不存在!')
# 读取大文件的方式
file_name = 'demo.txt'
try:
with open(file_name,encoding='utf-8') as file_obj:
# 定义一个变量,来保存文件的内容
file_content = ''
# 定义一个变量,来指定每次读取的大小
chunk = 100
# 创建一个循环来读取文件内容
while True:
# 读取chunk大小的内容
content = file_obj.read(chunk)
# 检查是否读取到了内容
if not content:
# 内容读取完毕,退出循环
break
# 输出内容
# print(content,end='')
file_content += content
except FileNotFoundError :
print(f'{file_name} 这个文件不存在!')
print(file_content)
2.readline () 可以用来读取一行内容
print(file_obj.readline(),end='')
print(file_obj.readline())
3.readlines () 用于一行一行的读取内容,它会一次性将读取到的内容封装到一个列表中返回
# r = file.readlines()
# pprint.pprint(r[0])
# pprint.pprint(r[1])
# pprint.pprint(r[2])
4.for 循环
file_name = 'demo02'
with open(file_name , encoding='utf-8') as file_obj:
for t in file_obj:
print(t)
4.写入文件
write () 给指定文件写入内容,如果原文件有内容,则删除,如果原文件的内容和新写入的内容一致,则覆盖。
使用open()打开文件时必须要指定打开文件所要做的操作(读、写、追加)
如果不指定操作类型,则默认是 读取文件 , 而读取文件时是不能向文件中写入的
r 表示只读的
w 表示是可写的,使用w来写入文件时,如果文件不存在会创建文件,如果文件存在则会截断文件
截断文件指删除原来文件中的所有内容
a 表示追加内容,如果文件不存在会创建文件,如果文件存在则会向文件中追加内容
x 用来新建文件,如果文件不存在则创建,存在则报错
“+” 为操作符增加功能
r+ 即可读又可写,文件不存在会报错
# with open(file_name , 'w' , encoding='utf-8') as file_obj:
# with open(file_name , 'r+' , encoding='utf-8') as file_obj:
with open(file_name , 'x' , encoding='utf-8') as file_obj:
# write()来向文件中写入内容,
# 如果操作的是一个文本文件的话,则write()需要传递一个字符串作为参数
# 该方法会可以分多次向文件中写入内容
# 写入完成以后,该方法会返回写入的字符的个数
file_obj.write('aaa\n')
file_obj.write('bbb\n')
file_obj.write('ccc\n')
r = file_obj.write(str(123)+'123123\n')
r = file_obj.write('今天天气真不错')
print(r)
5.Numpy
什么是NumPY ?
1.一种基于科学计算和多维数组等操作的一个文件(函数)
思考:矩阵:---->多维数组、多维空间