文件的基本操作(三)

文件的定位读写:

每个文件对象都有一个称为“文件读写位置”的属性,该属性会记录当前读写的位置。

文件读写位置默认为0,即读写位置默认在文件首部。Python提供了一些获取与修改文件读写位置的方法,以实现文件的定位读写。

1.seek()方法(使用该方法可控制文件的读写位置,实现文件的随机读写)

<f>.seek(offset,from) 改变当前文件操作指针的位置。

seek()方法中的参数offset表示偏移量,即读写位置需要移动的字节数

from用于指定文件的读写位置,该参数的取值为0、1、2,它们代表的含义为:

0:表示文件开头

1:表示使用当前读写位置

2:文章末尾

seek( )方法调用成功后会返回当前读写位置。

代码示例如下:

fo=open("f","w+")
ls=["中国","法国","美国"]
fo.writelines(ls)# 此处指针在文件末尾
for line in fo:
    print(line)
fo.close()

此时的运行界面如下:

使用seek()方法后的代码示例如下:

fo=open("f","w+")
ls=["中国","法国","美国"]
fo.writelines(ls)  #此处指针在文件末尾
fo.seek(0)#利用seek方法将位置放到文件开头
for line in fo:
    print(line)
fo.close()

运行界面如下:

 

 通过以上运行界面,我们了解到将数据写入文件的时候,此时写入为最后一行,此时遍历的时候,从文件的最后一行进行遍历,导致输出为空。利用seek()方法将文件回到开头的时候,此时遍历文件的时候,输出为文件的全部内容。

如果打开的是文本文件,seek()方法只允许相对于文件首部移动文件读写位置

若在参数为1或2的情况下移动文本文件的读写位置,程序会产生错误。

示例代码如下:

fo=open("f","w+")
ls=["中国","法国","美国"]
fo.writelines(ls)
fo.seek(6,1)
for line in fo:
    print(line)
fo.close()

运行界面如下:

如果要相对当前读写位置或文件末尾进行位移操作,需以二进制形式打开文件。

代码示例如下:

 

fo=open("f","rb")
fo.seek(6,1)
for line in fo:
    print(line)
fo.close()

运行界面如下: 

2.tell()方法,用于获取文件当前的读写位置。

代码示例如下:

with open('rgf.txt',mode='r',encoding="utf-8")as f:
 print(f.tell())  #获取文件读写位置
 print(f.read(5)) #利用read()方法移动文件读写位置
 print(f.tell())  #再次获取文件读写位置

运行界面如下:

 文本文件支持多种编码方式,不同编码方式下字符与字节的对应关系不同,常见的编码方式以及字节与字符的对应关系如表所示:

编码方式语言字符数字节数
ASCII中文12
英文11
UTF—8中文13
英文11
Unicode中文12
英文12
GBK中文12
英文11

os模块的常用函数:

除了python的内置方法外,os模块也定义了与文件操作相关的函数,利用这些函数可以实现删除文件、文件重命名、创建/删除目录、获取当前目录、更改默认目录与获取目录列表等操作。

1.remove()函数(删除文件)

使用os模块中的remove()函数可删除文件,该函数要求目标文件存在,其语法格式如下:

remove(文件名)

代码示例如下:

import os
with open('ypl.txt',mode='r',encoding="utf-8")as f:
 print(f.read())
os.remove("f")
with open('ypl.txt',mode='r',encoding="utf-8")as f:
 print(f.read())

运行界面如下: 

2.rename()函数(文件重命名)

使用os模块中的rename()函数可以更改文件名,该函数要求目标文件存在,其语法格式如下:

rename(原文件名,新文件名)

代码示例如下:

import os
os.rename("ypl.txt","rgf.txt")

运行界面如下:

之后我们运行rgf.txt代码示例如下:

with open('rgf.txt',mode='r',encoding="utf-8")as f:
 print(f.read())

运行界面如下:

 3.mkdir()函数(用于在当前目录下创建目录)

代码示例如下:

import os
os.mkdir('dir')

运行界面如下:

待创建的目录不能与已有目录重名

  4.rmdir()函数(用于删除目录)

代码示例如下:

import os
os.rmdir('dir')

运行界面如下:

通过以上截图进行对比,我们发现dir目录已经被删除。

5.getcwd()获取当前目录

当前目录即python当前的工作路径,os模块中的getcwd()函数用于获取当前目录,调用该函数可获取当前工作目录的绝对路径。

代码示例如下:

import os
a=os.getcwd()
print(a)

运行界面如下:

 6.更改默认目录-chdir()函数

os模块中的chdir()函数用于更改默认目录,若在对文件或文件夹进行操作时传入的是文件名而非路径名,python解释器会从默认目录中查找指定文件,或将新建的文件放在默认目录下。若没有特别设置,当前目录即为默认目录。

示例代码如下:

import os
os.chdir('E:\\')
print(os.getcwd())

运行界面如下所示:

 7.获取文件名列表-listdir()函数

实际应用中常常需要先获取指定目录下的所有文件,在对目标文件进行相应操作。os模块中提供了listdir()函数,使用该函数可方便快捷的获取指定目录下所有文件的文件名列表。

代码示例如下:

import os
a=os.listdir('E://')
print(a)

运行界面如下: 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一直再追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值