文件操作-打开、读写

来源:互联网 发布:淘宝达人直播申请 编辑:程序博客网 时间:2024/04/26 07:02

python3

一、简单的概念与术语

    编码(动词):按照某种规则(这个规则称为:编码(名词))将“文本”转换为“字节流”。而在python 3中则表示:unicode变成str

    解码(动词):将“字节流”按照某种规则转换成“文本”。而在python3中则表示:str变成unicode

实际上,任何东西在计算机中表示,都需要进行编码。例如,视频需要编码然后保存在文件中,播放的时候需要解码才能观看。

二、Python中encode、decode的使用叙述

首先,encode是unicode转换成str;decode是str转换成unicode。


s.encode('...'):在python 3中,将产生一个编码后的byte类型的字符串(这里有点像Python 2.x中的str),byte类型的字符串是支持解码操作的。

 

s.decode('...'):运行都会出错。因为python 3中的str类型对象有点像Python 2中的unicode, 而decode是将str转为unicode编码,所以str仅有一个encode方法,调用这个方法后将产生一个编码后的byte类型的字符。

三、文件读取过程中之前是以什么方式(gbk/utf8)编码存储,在打开时就需要以什么方式解码。

python3中str相当于unicode类型

with open(r'D:\python\cfiles\gbk编码.txt',encoding='gbk') as f1,\
    open(r'D:\python\cfiles\utf8编码.txt',encoding='utf8') as f2:
    con1=f1.read()
    con2=f2.read()
    content=con1+'\n'+con2
    print(content)
newFile=input('请输入新文件的名称:')
with open(newFile,'w',encoding='utf8') as f3:
    f3.write(content)

python2

1、用open() 内置函数打开

file_object=open(file_name,access_mode='r'/'w')

1)‘r’--只读(缺省,如文件不存在会报错,文件指针seek()在文件的开头)

进入到当前工作目录如cmd---cd d:\workspace\file

open('file1.txt')或open('./file1.txt')

open('..file1.txt')   ..表示当前副目录

代码如下

f=open('file1.txt','r')

f.read()

2)读取文件中固定字节

file_object = open('abinfile', 'rb')
chunk = file_object.read(100)

3)逐行读取文件内容

f = open("1.txt","r")  
lines = f.readlines()#读取全部内容  
for line in lines  
    print line  


第二种
f = open("foo.txt")             # 返回一个文件对象  
line = f.readline()             # 调用文件的 readline()方法  
while line:  
    print line,                 # 后面跟 ',' 将忽略换行符  
    # print(line, end = '')   # 在 Python 3中使用  
    line = f.readline()  
f.close()

‘w’--只写(为了写文件而打开文件,如果已存在,其内容会清空,不存在则创建)

代码如下:

====写文本文件

f=open('file1.txt','w')

f.write('hello world!') 写入的文件会暂时放进 文件缓冲区

f.flush() 刷新操作,重新打开该文件会看到写进的内容

====写二进制文件

f=open('file1.txt','wb')

===追加写文件

f=open('file1.txt','w+')

‘a’--追加

‘b’--二进制模式下打开音频、图像等

‘+’--可读可写     w+ 文件已存在会清空,不存在则创建;r+不清空,不创建

with open('file1.txt','w+') as f:  (文件打开的另一种方式)

f.write('how are you\n')

f.seek(0)文件指针定位在开头,不然读出来是空数据

data=f.read()

2、文件指针

每打开一个文件就会创建一个文件指针。通过文件对象的tell()方法获取文件指针的位置

seek()移动模式

f.seek(0,2)  #移到文件末尾

f.seek(-2,2) #文件倒数第二个字符

f.seek(0)  #移动到头

f.seek(2,1) #当前指针往后2个字符

代码如下:

f=open('file1.txt')   #文件指针在文件开头

f.tell()  #查看文件指针

f.read(2) #读取两个字符

f.tell()  #不写参数表示从当前执行的开始直到结束

f.close()#文件对象关闭

========

f.seek(2) 指定我们要移动到的位置

f.tell()



原创粉丝点击