文件操作

python之文件

1:什么是文件?

文件:是操作系统为应用程序或者用户提供的操作硬盘的一个接口
用户或者程序对文件的操作,都是调用操作系统来都写硬盘中的内容

2:为什么要有文件?

应用程序操作文件,是为了把内存中的数据永久保存到硬盘中

3:如何使用文件?

3.1:文件的基本操作
文件的路径: '找到文件的具体位置'
绝对路径:D:\s9\html01\html\s2.html
相对路径:当前文件夹,所在的文件位置html/s2.html

f=open('b.txt', mode='rt', encoding='utf-8')
print(f.read())
f.close() 让操作系统释放资源

3.2:文件模式
1:控制文件读写内容的模式,不能单都是用,必需与‘raw'结合使用

t:默认的
	1,读写内容都是以字符串为单位
	2,只适用于文本文件
	3,必须制定encoding的参数
b:	
	1,读写内容以bytes为单位
	2,适用于所有文件
	3,一定不能指定encoding参数

2:控制文件读写操作的模式
r:默认的
	1,只读模式
	2,当文件不存在时则报错
	3,当文件存在时,文件指针跳到文件开头
f = open('b.txt', mode='r', encoding='utf-8')
print(f.read())
f.close()

w:
	1,只写模式
	2,当文件不存在会创建一个空文件,然后文件指针跳到文件开头
	3,当文件存在时内容会被清空,然后文件指针跳到文件开头
f = open('c.txt', mode='w', encoding='utf-8')
f.write('alex\n')
f.write('dsb\n')
f.write('coce\n')
f.close()

a:	
	1,只追加模式
	2,当文件不存在会创建一个空文件,然后文件指针跳到文件末尾
	3,当文件存在时文件内容不会被清空,然后文件指针跳到文件末尾
	
	
a与w的区别
	相同点:在文件操作打开了没有被关闭情况下,连续的写入,新写入的内容总是在老的内容之后
	不同点:在文件关闭了重新打开的情况下,a模式永远把文件指针放到文件末尾
	

案例:

案例一:编写一个用户注册功能,注册的内容是账号名和名

name = input('请输入你的姓名')
pwd = input('请输入你的密码')

f = open('info.txt',mode='a',encoding='utf-8')
f.write('{}:{}'.format(name,pwd))
f.close()


案例二:编写一个用户验证功能,账号密码来自于文件
name = input('请输入你的姓名')
pwd = input('请输入你的密码')

f = open('info.txt',mode='r',encoding='utf-8')
for name, pwd in f.read():
	if name == name and pwd == pwd:
		print('登陆成功')
else:
	print('用户名或者密码错误!')

3:with上下文管理
with open('text.text',mode='a',encoding='utf-8') as f:
    f.write('你好\n')
    f.write('你好\n')
    f.write('你好二呀\n')



f = open(r'text.text', mode='a', encoding='utf-8') 
 f.write('你好\n') 
    f.write('你好\n')
    f.write('你好二呀\n')
f.close() # 通知系统回收资源,with是有一种机制让操作系统回收资源


3.4:bytes模式
with open('a.txt',mode='rt') as f:
    print(f.read())
    print(type(f.read()))
 上述代码报错
 a.txt是以utf-8编码的格式存储在硬盘中(内容还是二进制存的)
 因为内容存储在硬盘中都是以二进制形式存储的,但是读取的时候计算机把,二进制安照一张表(翻译了一下,展现出来)
 
t:模式只能适用于文本文件
b:模式适用于所以类型文件(不能单独使用)

r:
with open('a.jpg', mode='rb') as f:
    data = f.read()
    print(data.decode("utf-8"))
print(type(data))


with open('a.txt', mode='rb') as f:
    print(f.read().decode('utf-8'))

w:
with open('a.txt', mode='wb') as f:
	f.write('hello word'.encode('utf-8'))
	
a:
with open('a.txt', mode'ab') as f:
	f.write('hellow word'.encode('utf-8))

3.5文件操作方法
read
with open('a.txt',mode='rt' encoding='utf-8') as f:
	print(f.read())
	print(type(f.read()))

write
f = open('text.txt', mode='a',encoding='utf-8')
for i in range(100000):
    f.write('{}次写入数据\n'.format(i))
    f.flush() # 表示有一条数据就写入硬盘中
f.close()

readline #一次拿一条数据
with open('text.txt', mode='rt' ,eocoding="utf-8") as f:
	print(f.readline())

readlines #一次拿全部数据,但是一条一条给你(好像表达的也不准确)
with open('text.txt', mode='rt' ,eocoding="utf-8") as f:
	for line in readlines():
		pirnt(line)
3.6:+
r+t = rwt
w+t = rwt
a+t = rat
默认情况下t可以不写

a+b = rwb
r+b = rwb
a+b = rab
posted @ 2020-06-11 22:24  为了等  阅读(135)  评论(0编辑  收藏  举报