Python进阶之路—八

17、文件的简单使用
对文件的操作流程:
<1>打开文件,得到文件句柄并赋值给一个变量
<2>通过句柄对文件进行操作
<3>关闭文件
(1)、打开和关闭文件

f = open('小重山','r',encoding ='utf-8 ')
f.close()

(2)、通过句柄对文件的一些基本操作
<1> f.read(i)
从文件中读取指定的字节数(i),如果未给定或为负,则读取所有。
<2> f.readline(i)
读取整行,包括 “\n” 字符。
<3> f.readlines(i)
读取所有行并返回列表,若给定i>0,返回总和大约为i字节的行, 实际读取值可能比 i 较大, 因为需要填充缓冲区。
<4> f.write(str)
将字符串写入文件,没有返回值
<5> f.tell()
返回光标所在的位置
<6> f.seek()
设置光标的位置
<7> f.flush()
刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
<8>f.truncate(i)
从文件的首行首字符开始截断,截断文件为 i 个字符,无 i 表示从当前位置截断;截断之后 , 后面的所有字符被删除,其中Widnows 系统下的换行代表2个字符大小。
(3)、通过句柄对文件的一些基本操作的应用

#f = open('小重山','r',encoding ='utf-8 ')
#print(f.read())
# f = open('小重山','w',encoding='utf-8')#执行完这一语句之后,文件小重山中的内容就被格式化了
# f.write('This is python!')
# f = open('小重山','a',encoding='utf-8')
# f.write("\nHello World\n")
# f.write("My name is hyq ")

#print(f.readline(8))#读取第一行中的前8个字节的字符
# print(f.tell())#告诉目前光标所在的位置
# print(f.seek(7))#让光标达到指定的位置,数字代表字节数
'''
说明:在utf-8的编码中,中文字符或中文状态下的符号占3个字节,英文字符或英文状态下的符号占一个字节
'''
# print(f.read(2))
# print(f.readlines())#打印结果是一个列表['This is python!\n', 'Hello World\n', 'My name is hyq ']
# data = f.readlines()
# print(data)#打印结果是一个空列表[]
#f.close()
'''
f.truncate(i)只能在'w'或'a'模式下使用,不能再'r'模式下使用
其功能:永远从文件内容的最开始(0字节处),截取到第i个字节
'''
# f = open('小重山','w',encoding ='utf-8 ')#执行完这一语句之后,文件小重山中的内容就被格式化了
# f.write('This is python')
# f.seek(2)#把光标移到第2个字节处
# f.truncate(4)#依旧从第0个字节处开始,截取到第四个字节   This

# f = open('小重山','a',encoding ='utf-8 ')
# f.write('I am from China\n')
# print(f.tell())
# f.seek(2)#把光标移到第2个字节处
# f.truncate(4)#依旧从第0个字节处开始,截取到第四个字节   This
#f.close()
'''
f.flush()同步把数据从缓存转移到磁盘中
'''
# f = open('小重山','a',encoding ='utf-8 ')
# import time
# f.write('\nI am from China')
# f.flush()
# time.sleep(10)
#f.close()
'''
说明:若没有f.flush()则需要10s后才在文件中加入'I am from China'
     加入f.flush()后,当程序执行到该条语句后,直接将'I am from China'加入到文件中,等待10s后,该段代码才结束
'''
'''
文件的其他操作模式:r+,w+,a+
r+:先读后写;光标默认在0位置,从最后位置开始写
w+:先写后读;先格式化,在写读
a+:先加后读;光标默认在最后位置,先写,然后在读
'''
#f = open('小重山','r+',encoding = 'utf-8')
#print(f.tell())
# f.seek(9)
#f.write('haha')
#f.write('This')
# # f.flush()
# print(f.read())
# f.write('哈哈')
#f.close()

(4)、with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:

with open ('log','r')as f:
    any

如此方式,当当with代码块执行完毕时,内部会自动关闭并释放文件资源。
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:

with open('log1') as obj1, open('log2') as obj2:
    any
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值