小白成长之路:初识python(四) -----------python文件相关操作
2017-10-26 13:36 张小贤TT 阅读(238) 评论(0) 编辑 收藏 举报上代码:
#! /usr/bin/env python
# -*- coding:utf-8 -*-
############# python 文件操作总结 #####################
##打开文件
# open(path + filename,model)
#第一个参数为要打开的文件名,第二个参数为打开的方式
## 基本的打开方式
## 只读 r 为文件的默认打开方式
## 只写 w ,以w方式打开文件的时候会清空文件的内容
## 只写 x ,也是只写模式,当文件名不存在时会创建一个文件,如果文件名存在会报错
## 追加 a ,也是只写模式,和w模式不同的是不会清空文件的内容,而是在文件的后面追加内容
## 以二进制的方式打开文件
## 'rb','wb','xb','ab'
## 和基本打开方式的r,w,x,a 模式类似,只是在读取的过程中没有经过python解释器的
##处理,直接以字节的方式读取,在写入的过程中也要以字节的形式进行写入,否则会报错
##普通方式和二进制方式的不同后面会说明
## 文件的高级打开方式,可读写 ^ ^
## 'r+','w+','x+','a+'
## 与基本打开方式不同的是,打开文件的时候可以进行读写操作
#############################################################
## 文件指针相关操作
##seek(int) 调整当前文件指针的位置
##tell() 获取当前文件指针的位置
#############################################################
#读取文件的内容
## read() 不写参数默认读取文件中的内容(所有内容),参数为int型数值
#写入参数的时候,在用普通方式打开文件时,按字符读取(返回的是字符串格式的内容),
# 再用二进制方式打开时,按字节读取(返回的是其对应编码形式的字节内容)
## readline() 按行读取文件内容
## readlines() 读取文件所有内容,返回一个列表,列表中的每一个元素为每一行的内容
################################################################
## write() 向文件中写入数据,在用普通方式打开文件时,用字符串格式的数据向文件
# 内添加数据,再用二进制方式打开时,以字节的方式写入
################################################################
# close() 关闭文件
# flush() 把内存内的数据写入磁盘
# truncate() 根据当前文件指针所在的位置进行截断操作,保留指针位置之前的数据
####################################################################
############普通方式和二进制方式的不同#############
# test.txt 文件内的内容是‘我是中国人’
# f = open('test.txt','r+',encoding='utf-8')
# data = f.read()
# print(data)
# f.close()
# 执行上述代码的到的结果是 :我是中国人
# f = open('test.txt','r+b')
# data = f.read()
# print(data)
# f.close()
# 执行上述代码的得到的结果是:
# b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
###### 进一步验证两种方式的不同 ##########
# ret = bytes('我是中国人',encoding='utf-8')
# print(ret)
# b'\xe6\x88\x91\xe6\x98\xaf\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba'
# 和用二进制打开是一样的结果
## 结论 :
# 数据在磁盘中存储的都是用二进制的方式存储的,因为机器只认识0和1
# 在用普通方式打开文件时python解释器已经为我们自动的把字节转换为我们熟悉的字符形式
# 而在用二进制方式打开的时候则没有这个过程
# 在写数据的时候也是一样的道理,就不做验证了
####################################################################
# 貌似上面说那么多也没啥太大用。。。
## 在操作文件的过程中,可以用with关键字,这样就不用f.close()操作了
# with open('test.txt','r+',encoding='utf-8') as f:
# for line in f:
# print(line)
#上述代码也是读取并打印文件每一行的操作,在读不到内容时自动退出并关闭文件
####################################################################
##在python2.7之后的版本可以同时对两个文件进行操作,格式如下
# with open(...) as f1,open(...) as f2:
# for line in f1:
# f2.write(line)
####################################################################