Python-文件操作

目录

 概述

文件的写操作

 写入单行

 写入多行

文件的读操作

正常读取

读取指定字符数

 读取一行readline()

读取多行readlines()

tell( ) 和seek( ) -获取和指定指针

tell()方法

seek()方法

文件访问模式

文件权限大全

文件对拷操作 

文件缓冲区

 文件对象(获取文件属性)


 概述

使用python对文件(文本,二进制文件)进行读,写,对拷操作。

文件的写操作

 在进行写入操作时,权限为"w",在文件不存在的情况下,会自动创建。

如果存在文件,则对文件进行覆盖操作。

 写入单行

f1 = open("f.txt", "w", encoding="utf-8")
f1.write("I have a dream!")
f1.close()

 

 写入多行

***方式1***
f1 = open("f.txt", "w", encoding="utf-8")
f1.write("aaa \nbbb \nccc \n")
f1.close()

***方式2***
list = ["aaa\n", "bbb\n", "ccc\n"]
f1 = open("f.txt", "w", encoding="utf-8")
f1.writelines(list)

***方式3***
list = ["aaa", "bbb", "ccc"]
f1 = open("f.txt", "w", encoding="utf-8")
f1.write("\n".join(list))

 

 

文件的读操作

现有一文件:"f1.txt",内容为

 

正常读取

***读取操作***
f1 = open("f1.txt", "r", encoding="utf-8")
print(f1.read())
f1.close()

输出为:
I have a dream1!
I have a dream2!
I have a dream3!

读取指定字符数

***读取指定字符***
f1 = open("f1.txt", "r", encoding="utf-8")
print(f1.read(3)) //读取指针后3个字符
print(f1.read(3)) //读取指针后3个字符
f1.close()

***输出为(存在空格)***
I h
ave (从指针位置开始读)

可以看出,存在指针问题,读取过程中指针的定位会移动,并且用于指定字符数。

 读取一行readline()

***读取一行***
f1 = open("f1.txt", "r", encoding="utf-8")
print(f1.readline())
print(f1.readline())
f1.close()

***输出为***
I have a dream1!
I have a dream2! (存在指针移动问题)

读取多行readlines()

***读取多行***
f1 = open("f1.txt", "r", encoding="utf-8")
print(f1.readlines())
f1.close()

***输出为(列表形式)***
['I have a dream1!\n', 'I have a dream2!\n', 'I have a dream3!\n']

tell( ) 和seek( ) -获取和指定指针

tell()方法

返回指针当前所在的位置(指针所在位置前面的字节数),例如:

***f1文件内容***
I have a dream1!

//操作
f1 = open("f1.txt", "r", encoding="utf-8")
//使指针移动
print(f1.read(2))
print(f1.read(2))
//获取指针位置
print(f1.tell())
f1.close()

***输出***
I 
ha
4

值得注意的是,输出的是字节数,如果使用的字符集是GBK,一个中文等于2个字节,使用的是UTF-8,则一个中文等于3个字节。

seek()方法

 seek()方法:指定指针位置,seek( offset [ , whence ] );

参数说明:

offset:

指针向右偏移多少个字节。

whence(可选):

从什么位置开始偏移

0:开始位置,1当前位置(默认),2末尾位置

f1 = open("f1.txt", "r", encoding="utf-8")
//设置指针向后移动2个位置后读取
f1.seek(2)
print(f1.read(2))
//将指针重置为最开头后读取
f1.seek(0, 0)
print(f1.read(2))
//输出当前指针位置
print(f1.tell())
f1.close()

***输出为***
ha
I 
2

文件访问模式

可以设置文件操作的权限。

除了如上使用的权限:"r","w"等,还有"a","r+","w+" 等等

文件权限大全

文件对拷操作 

两个文件,使用读取和写入进行拷贝操作。

f1 = open("f1.txt", "r", encoding="utf-8")
f2 = open("f_copy", "w", encoding="utf-8")

while True:
    source = f1.read()
    # 判断f1中是否有数据
    if source:
        f2.write(source)
    else:
        break

f1.close()
f2.close()

文件缓冲区

我们在进行文件写入操作时,使用了write()后,并没有立即将数据存入硬盘(文件)中,而是将数据先放到内存中的"缓冲区",等待指令(清空缓冲区指令)再进行下一步操作(存入文件)。

存在缓冲区的数据什么情况才会存入文件呢?

有如下4种情况会"清空"(传入文件)。

1.当缓冲区满后。

2.程序关闭时。

3.文件关闭时,close()操作。

4.手动清空缓存区,方法:flash()。

 文件对象(获取文件属性)

可以通过文件对象获取文件的属性和状态。例如:

f1 = open("f1.txt", "r", encoding="utf-8")
print(f1.name)  # f1.txt
print(f1.mode)  # r
print(f1.encoding)  # utf-8
print(f1.readable())  # True  是否可读
print(f1.writable())  # False 是否可写
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mao.O

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

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

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

打赏作者

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

抵扣说明:

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

余额充值