python 文件读写

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
Open file and return a stream. Raise IOError upon failure.

常用打开模式:

r 只能读 
r+ 可读可写,不会创建不存在的文件,从顶部开始写,会覆盖之前此位置的内容
w+ 可读可写,如果文件存在,则覆盖整个文件,不存在则创建
w 只能写,覆盖整个文件,不存在则创建 
a 只能写,从文件底部添加内容 不存在则创建 
a+ 可读可写 从文件顶部读取内容 从文件底部添加内容 不存在则创建 ???实际上从头开始写

注:rb 是以二进制读取,用到socket的时候,传输文件,读取和写入用的都是二进制形式,rb和wb可以更快速的进行文件的传输

 

1 with open('test.txt', mode='r+', encoding='utf-8') as f:
2     f.read(1)
3     f.writelines("北京")

 

============

写操作不会自动加入换行符

读的一行末尾会有换行操作,可以用''.strip()去掉换行符

with open('test.txt', mode='r', encoding='utf-8') as f:
    for line in f:
        print(line.strip()) 去掉换行

 

================

 如果指针已经指向后面,想要读取前面的内容,需要先把指针重新指向前面再读取。

with open('test.txt', mode='w+', encoding='utf-8') as f:
    f.writelines("天津")
    f.writelines('山东')
    f.flush()
    f.seek(0)
    print(f.readlines())

 

file.seek(off, whence=0):从文件中移动off个操作标记(文件指针),正往结束方向移动,负往开始方向移动。如果设定了whence参数,就以whence设定的起始位为准,0代表从头开始,1代表当前位置,2代表文件最末尾位置。 

 

============== 

示例:

f = open('cdays-4-test.txt', 'r')                   #以读方式打开文件  
result = list()  
for line in f.readlines():                              #依次读取每行  
    line = line.strip()                                    #去掉每行头尾空白  
    if not len(line) or line.startswith('#'):       #判断是否是空行或注释行  
        continue                                            #是的话,跳过不处理  
    result.append(line)                                #保存  
result.sort()                                               #排序结果   
f.close()                     #关闭文件
with open('new_file.txt','w') as fw:            #with方式不需要再进行close
  fw.write('%s' % '\n'.join(result))     #保存入结果文件

 

posted @ 2017-06-19 20:25  Ethducky  阅读(252)  评论(0编辑  收藏  举报