文件的操作

open() 打开文件,默认只读模式,赋值时存一个文件句柄(内存对象,记录了该文件的一些属性,名字,位置,大小等)

  r: 只读

  w: 只写,新建文件,覆盖之前的同名文件

  a: 追加,往内容末尾写

  r+: 读写,这里的写只能往末尾写

  w+: 写读,这里的写是新建文件,同样只能往末尾写

  a+: 追加读写

  rb: 二进制文件的读写

read() 读文件,可加入参数指定读取内容的长度

>>> f = open('today.txt')
>>> f.read()
'今天星期五啦\n明天好好休息,加油!'

write() 写文件  w模式会新建文件再写入,会覆盖之前的文件;a模式在原文件上的末尾追加内容

>>> f = open('today.txt', 'w')
>>> f.write('明天周一,加油!')
8
>>> f.close()
>>> f = open('today.txt')
>>> f.read()
'明天周一,加油!'
>>> f.close()

>>> f = open('today.txt', 'a')
>>> f.write('我要努力努力再努力!')
10
>>> f.close()
>>> f = open('today.txt')
>>> f.read()
'明天周一,加油!我要努力努力再努力!'

 readline() 读一行

>>> f = open('today.txt', 'r')
>>> f.readline()
'明天周一,加油!我要努力努力再努力!'

readlines() 把内容转为列表,各行内容作为列表中的元素

>>> f = open('today.txt', 'r')
>>> f.readlines()
['明天周一,加油!我要努力努力再努力!']

遍历每行的两种方法

>>> for i in f.readlines():
...   print(i)
...
明天周一,加油!我要努力努力再努力!

今天周一,我在继续努力!

明天周二,我争取更努力!

>>> for i in f:   # 这个方法比上面的性能高,因为f就是一个迭代器
...   print(i)
...
明天周一,加油!我要努力努力再努力!

今天周一,我在继续努力!

明天周二,我争取更努力

tell() 返回当前文件句柄的指针位置

>>> f = open('today.txt', 'r')
>>> f.read(2)
'明天'
>>> f.tell()
4

seek() 把文件句柄的指针移到指定位置

>>> f = open('today.txt', 'r')
>>> f.seek(4)
4
>>> f.read()
'周一,加油!我要努力努力再努力!\n今天周一,我在继续努力!\n明天周二,我争取更努力!'

encoding  返回文件的编码

>>> f = open('today.txt', 'r')
>>> f.encoding
'cp936'

fileno() 文件句柄的编号(在IO接口中)

name 文件名

isatty() 是否为一个终端设备

seekable() 是否可以移动文件指针,终端设备文件移不了

readable() 是否可读

writeable() 同理

flush() 刷新(把内存中的缓存写入磁盘里,写文件时,先放到内存中的缓存中,等到缓存一定内容时,再写入硬盘)。

 

进度条

import sys, time
for i in range(100):
    sys.stdout.write('*') # sys.stdout.write与print的区别是继续打印不换行
    sys.stdout.flush()
    time.sleep(0.1)

truncate() 从头开始截取内容(不受文件句柄指针的影响),不指定长度时,会清空文件内容

>>> f = open('today.txt', 'a')
>>> f.truncate(10)
>>> f.close()
>>> f = open('today.txt', 'r')
>>> f.read()
'明天周一,'

 

 

修改文件的方法:

1.像vim那样,先把文件读到内存中,再改。(文件大的时候,占用内存大,不推荐!)

2.边改边写到新的文件。(逐行读第一个文件,(修改)写入另一个文件)

 

with语句  执行完自动close, 支持多文件一起close

>>> with open('today.txt', 'r') as f:
...   f.read()
...
'明天周一,'

with open('log1') as f1, open('log2') as f2:  # 多文件操作,逗号隔开
  pass

 

posted @ 2018-03-25 23:30  AllenZhang_(*^▽^*)  阅读(119)  评论(0编辑  收藏  举报