'''
1、什么是文件
文件是操作系统为应用程序或者用户提供的一个操作硬盘的虚拟的单位
2、为什么要用文件
应用程序中需要经常将内存的数据永久保存下来,而应用程序又无法直接操作硬件
只能通过操作系统提供的虚拟的单位去间接地操作硬盘
3、如何用文件
'''
open操作做了哪些事?
1、向操作系统发送打开文件的请求
2、在应用程序拿到一个返回值,该值指向操作系统打开的文件
f=open(r'D:\SH_weekend_s2\day03\a.txt',mode='r',encoding='utf-8')
f=>应用程序中的一个值=>操作系统打开的文件a.txt=>硬盘中的一块空间
data=f.read()
print(data)
del f
f.close() # 向操作系统发送关闭文件的请求
print(f)
f.read()
总结:文件处理的步骤
1、打开文件
2、读/写文件
3、关闭文件
with open(r'a.txt',mode='r',encoding='utf-8') as f,\
open('b.txt',mode='r',encoding='utf-8') as f1:
#文件处理的代码块
pass
文件的打开模式有三种
r:只读模式(默认的)
w:只写
a:只追加写
控制操作文件内容的模式有两种(不能单独使用,必须与r、w、a连用)
t(默认的):text文本模式,该模式下操作文件内容的单位都是字符串,该模式只适用于文本文件
强调:该模式下必须指定encoding="某种字符编码"
b:bytes二进制模式,该模式下操作文件的内容的单位都是bytes,该模式适用于所有类型的文件
1、r模式:只读模式(默认的)
文件不存在则报错
文件存在,并且文件指针调到文件的开头
with open('a.txt',mode='rt',encoding='utf-8') as f:
data1=f.read()
print(type(data1))
print('第一次:',data1)
data2=f.read()
print('第二次',data2)#第二次读取为空
print(f.readable())#是否可读
print(f.writable())#是否可写
# f.write('hello')#因为文件为只读模式,不可写,故写入是会报错
pass
line1=f.readline()
print(line1,end='')
print('====>')
line2 = f.readline()
print(line2, end='')
l=f.readlines()
print(l,type(l))
pass
2、w模式:只写模式
文件不存在则创建一个空文档,并且文件指针跳到文件的开头
文件存在,会将内容清空,并且文件指针跳到文件的开头
强调:
如果每次都是重新打开文件,那么文件内容总会清空,指针跳到开头
如果在打开文件不关闭的情况下,连续的写入,本次写入会基于上一次指针所在的位置往后继续继续写
with open('c.txt',mode='wt',encoding='utf-8') as f:
print(f.readable())
print(f.writable())
f.readline()
f.write('你好啊\n')
f.write('我的天')
l=['1111\n','2222\n','33333\n']
for line in l:
f.write(line)
f.writelines(l)
f.write('1111\n2222\n3333\n')
f.write('hello')
f.writelines('hello')
for i in 'hello':
f.write(i)
pass
3、a模式:只追加写模式
文件不存在则创建一个空文档,并且文件指针跳到文件的末尾
文件存在,也会将文件指针跳到文件的末尾
with open('a.txt',mode='at',encoding='utf-8') as f:
print(f.readable())
print(f.writable())
f.read()
f.write('你好\n')
f.writelines(['aaa\n','bbbb\n'])
4、b模式:bytes二进制模式,该模式下操作文件的内容的单位都是bytes,该模式适用于所有类型的文件
强调:一定不能指定encoding参数
with open('1.mp4',mode='rb') as f:
data=f.readline()
print(data,type(data))
with open('d.txt',mode='rb') as f:
data=f.read()
# print(data,type(data))
res=data.decode('utf-8')
print(res)
with open('d.txt','wb') as f:
f.write('论颜值egon秒杀一切,论才华更是无能敌'.encode('utf-8'))
遍历文件内容的方式
with open('d.txt',mode='rt',encoding='utf-8') as f:
for line in f: #line='bbb\n'
print(line,end='')
with open(r'd.txt',mode='rb') as f:
print(f.readline())
print(f.readline())
print(f.readline())
print(b'11111111\n')
print('=================')
with open('1.mp4',mode='rb') as f:
for line in f:
# print(line,end='')
print(line)
python3 D:\SH_weekend_s2\day03\03 文件打开模式.py
import sys
print(sys.argv)
print(sys.argv[2])
了解:+
r+b
w+b
a+b
with open('a.txt',mode='r+t',encoding='utf-8') as f:
# print(f.readable())
# print(f.writable())
# print(f.read())
f.readline()
f.write('4444')
文件处理
http://www.cnblogs.com/linhaifeng/articles/5984922.html