python学习7.1文件

一、open() 函数

1、第一个参数:文件名

2、打开方式:

(1)' r ':以只读模式打开文件(readlines() 以列表形式输出)

输入:

file = open('a.txt', 'r')
print(file.readlines())
file.close()

输出:

['cy\n']

(2)' w ':以只写模式打开文件,若不存在则创建

输入:(此时 b.txt 不存在,这样操作是创建 b.txt 然后录入数据 “hello world” )

file = open('b.text', 'w')
file.write("hello world!")
file.close()

若文件存在且已有内容,则进行覆盖

(3)' a ':追加模式,可以对文件已有内容后面进行追加

输入:

file = open('b.text', 'a')
file.write("hello world!")
file.close()

输出:

hello world!hello world!hello world!

(4)' rb ' 和 ' wb ' :以二进制文件读写,所谓二进制文件,就是以字节进行存储,,eg:mp3音频文件,jpg和png图片,doc文档等等

输入:

file = open('13.png', 'rb')
file1 = open('copy13.png', 'wb')
file1.write(file.read())
file1.close()
file.close()

输出:

 先以只读方式打开二进制文件 13.png ,然后以只写方式打开copy13.png,若不存在,则创建一个新的 copy13.png ,接着给 copy13.png 写入从 13.png 读取的数据,最后关闭文件;

(5)'a+' 以读写方式打开文件

二、文件对象的常用方法

1、read(size) 若省略 size ,则默认读到末尾

file = open('a.txt', 'r')
print(file.read(1))
file.close()

无论文件内容是文字还是字符,均输出第一个

2、readline() 只读取文件中第一行的内容

3、readlines() 把每一行作为一个独立对象,然后放到列表中

输入:

file = open('a.txt', 'r')
# print(file.read(1))
print(file.readlines())
file.close()
py
y
t
hon

输出:

['py\n', 'y\n', 't\n', 'hon\n']

4、write() 写入一个字符串

5、writelines() 写入一个列表

输入:可以加入 ' \n ' 来换行

file = open('a.txt', 'a')
zwj = ['dog\n', '250\n']
file.writelines(zwj)
file.close()

输出:

py
y
t
hon
dog
250

6、seek(num) 定位文件指针到第 num 之后(文字每个两字节,字符每个一字节,换行占两个字符)

7、tell() 返回文件指针的位置

8、flush() 保存

9、close() 关闭

三、with 语句,with 语句完结后,自动执行释放内存的操作,即不需要 close()

with open('a.txt', 'r') as file:
    print(file.read())

补充:

(1)r+w+ 都是Python文件操作模式中的标识符,它们都允许读取和写入文件。但它们之间有一些区别。

  • r+:打开文件用于读写,文件指针位于文件开头,如果文件不存在会抛出异常。

  • w+:打开文件用于读写,如果文件存在则截断文件,如果文件不存在则创建文件。文件指针位于文件开头。

总的来说,r+模式打开一个已经存在的文件,w+模式创建一个新文件,如果文件已经存在则截断它。在使用w+模式时,一定要小心,因为如果打开的是一个已经存在的文件,它的内容将被清空。

在使用r+w+模式时,需要注意的是,每次写入数据后,必须将文件指针移动到正确的位置。如果不移动指针,则新的写入数据将覆盖旧的数据,而不是追加到文件的末尾

(2)如果要将文件指针移动到文件的开头,可以使用seek(0, 0);如果要将文件指针移动到文件的末尾,可以使用seek(0, 2)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值