python基础4-文件处理

打开文件方式:
f = open('db.txt',mode='r',encoding='utf-8') #打开文件,默认是只读,可以不加‘r’参数
fi=f.read() #可以不定义该变量,直接只写print(f.read()
print(fi) #读所有,bytes---decode('utf-8')--->str
f.close() #回收操作系统的资源
#流程分析:
#1:向操作系统发起系统调用
#2:操作系统打开这个文件,返回一个文件句柄给应用程序
#3: 在应用程序中把文件句柄赋值给一个变量
#注意两点:
#1:打开一个文件对应两部分,一个Python级别的文件句柄,另外一个是操作系统打开的文件(默认
#打开文件的编码是以操作系统的编码为准的,除非open()指定encoding='编码' )
#2:当文件操作完毕后,应该回收两部分资源,
#del f:回收应用程序资源(python解释器自动的垃圾回收机制已经替我们做了,所以可以省略)
#f.close:回收操作系统

with open('db.txt',mode='r',encoding='utf-8') as f:
print(f.read())
f.close()
#with 确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。


f = open('db.txt',encoding='utf-8')
print(f.readlines()) #读所有,并以列表的形式展现
f.close()

f = open('db.txt',encoding='utf-8')
print(f.readline()) #一次打印一行内容,多个readline则结果显示多行内容
print(f.readline())
f.close()

往文件写的方式:
f = open('db.txt',mode='w',encoding='utf-8')
f.write('fffff\n') #如果文件不存在则穿件,如果文件存在则清空文件再往里写内容
f.write('gggg\n') #写多个write函数,则网文件中添加多行内容,\n是换行符号
f.write('hhhhh')
f.close()


l=['444\n','55555\n','66666\n']
f = open('db.txt',mode='w',encoding='utf-8')
for i in l: #通过for循环向文件写多行内容
f.write(i)
f.close()

l=['444\n','55555\n','66666\n']
f = open('db.txt',mode='w',encoding='utf-8')
f.writelines(l) #效果与上述for循环效果相同
f.close()

往文件追加内容:
l=['444\n','55555\n','66666\n']
f = open('db.txt',mode='a',encoding='utf-8')
f.writelines(l)
f.close()
#a:追加写模式,如果文件存在则把光标移动到文件末尾,如果文件不存在则新建

遍历文件所有所有内容:
f = open('db.txt',mode='r',encoding='utf-8')
for i in f:
print(i,end='')
f.close()

以bytes的形式去操作文件内容,不能指定编码:
with open('hezi.jpg',mode='rb') as f: #以二进制文件方式打开非字符文件
print(f.read())

复制文件练习
s = input('输入源文件:')
d = input('输入目标文件:')
with open(s,'rb') as read_f,open(d,'wb') as write_f:
for line in read_f:
write_f.write(line)
#以二进制的方法复制包括字符或者非字符文件

posted @ 2017-11-28 10:52  h_lh  阅读(104)  评论(0编辑  收藏  举报