IO——文件操作

文件读写

file_object = open(file_name, access_mode=‘r’, buffering=-1)
功能:打开一个文件,返回一个文件对象。
file_name: 文件名,字符串格式,在里边可以添加文件的路径/name
access_mode:读写方式,r, w, a, +, b十二种组合
buffering:1表示有行缓冲,默认则表示使用系统默认提供的缓冲机制。
1,读取文件
read(1024):读到第1024个字符,不写的话是0,表示读完
readline(10):读到第一行的第10个字符,不写的话表示读完这一行
readlines(1024):读到第1024字符所在的行为止,将每一行作为一个元素,返回一个列表,不写的话,表示读完整个文件。

文件对象本身也是一个可迭代对象,在for循环中可以迭代文件的每一行。
for line in f:
print(line)
2,写入文件
write(string)
功能: 把文本数据或二进制数据块的字符串写入到文件中去
参数:要写入的内容
返回值:写入的字符个数
如果需要换行要自己在写入内容中添加\n
writelines(str_list)
功能:接受一个字符串列表作为参数,将它们写入文件。
参数: 要写入的内容列表
4. 关闭文件
file_object.close()
防止一些误操作,也可以节省资源,注意,要带括号
5. with操作
语句块结束后会自动处理,所以也就不需要close
with open(‘file’,‘r+’) as f:
f.read()

文件管理函数:
(注意的是,要先导入os这个包)

import os
print("文件大小:", os.path.getsize('file'))
print("查看目录内容:", os.listdir('.'))
print("文件存在么:", os.path.exists('./file'))
print("是一个普通文件:", os.path.isfile('file'))
print("删除一个文件:", os.remove('file'))

文件偏移量:
(每次操作到的文件位置)

"""
注意: r  w 打开文件默认文件偏移量在开头
      a 打开文件偏移量在结尾
      读写使用的是同一个偏移量
"""
f = open('file','w+') # 读写
f.write('hello world')
f.flush()
print("文件偏移量:", f.tell()) # 查看偏移量
# 移动一下偏移量
f.seek(5,0)
# f.write('你好')
data = f.read()
print(data)
f.close()

空洞文件,占位置:
(也就是在这个文件末尾,又把偏移量向后移动了很多)

f = open('file','wb')
f.write(b'START')
# 末尾向后移动了10M
f.seek(1024*1024*10,2)
f.write(b'END')
f.close()

刷新缓冲区的函数和操作、练习:
(刷新后才能实时看到文件的变化,不手动刷新的情况:

  1. 缓冲区被写满
  2. 程序执行结束或者文件对象被关闭
  3. 行缓冲遇到换行
"""
编写一个程序,向一个文件中不断写入如下内容:

  1. 2019-1-1  18:18:18
  2. 2019-1-1  18:18:20
  3. 2019-1-1  18:18:22
  4. 2019-1-1  18:18:24
  5. 2019-1-1  18:19:56

  * 每次写入占一行
  * 这是一个死循环,2s写入一次,但是可以实时查看写入内容
  * 当程序退出,重新启动后,书写内容能够衔接之前
  序号内容
"""
from time import sleep,ctime

f = open('file','a+')

f.seek(0) # 文件偏移量定位到开头
n = 1
for i in f:
    n += 1   # 数数有多少行

while True:
    sleep(2)
    msg = "%d. %s\n"%(n,ctime())
    f.write(msg)
    f.flush() # 刷新缓冲
    n += 1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值