python文件io是啥意思_Python文件IO(普通文件读写)

## 打开一个文件

- fileobj = open(filename, mode)

其中:

fileobj是open()返回的文件对象

filename是该文件的字符串名

mode是指明文件类型和操作的子字符串

- mode的第一个字母表示对其的操作

- r表示读取

- w表示写入,如果文件不存在就创建,如果存在则重新写入新内容

- x表示在文件不存在的情况下新创建并写文件

- a表示如果文件存在,在文件末尾追加内容

- mode的第二个字母是文件类型

- t(或者省略)代表文本类型

- b代表二进制文件

## 使用write()写入文件,使用close()关闭文件

1 poem = """

2 离离原上草,一岁一枯荣。3 野火烧不尽,春风吹又生。4 远芳侵古道,晴翠接荒城。5 又送王孙去,萋萋满别情。6 """

7 file_obj = open("诗", 'wt') #打开名为‘诗’的文本文件,若‘诗’不存在则创建

8 file_obj.write(poem) #写入文件

9 file_obj.close() #关闭文件

- 也可以使用print()写入文件

1 poem = """

2 离离原上草,一岁一枯荣。3 野火烧不尽,春风吹又生。4 远芳侵古道,晴翠接荒城。5 又送王孙去,萋萋满别情。6 """

7 file_obj = open("诗", 'wt') #打开名为‘诗’的文本文件,若‘诗’不存在则创建

8 print(poem, file=file_obj) #写入文件

9 file_obj.close() #关闭文件

- 如果需要写入的内容非常多,可以将数据分块写入

1 poem = """

2 离离原上草,一岁一枯荣。3 野火烧不尽,春风吹又生。4 远芳侵古道,晴翠接荒城。5 又送王孙去,萋萋满别情。6 """

7 file_obj = open("诗", 'wt') #打开名为‘诗’的文本文件,若‘诗’不存在则创建

8

9 start =010 chunk = 20 #每次写入20个字符

11 whileTrue:12 if start >len(poem):13 break

14 file_obj.write(poem[start:start+chunk])15 start +=chunk16

17 file_obj.close() #关闭文件

## 文件读取

- read():不带参数的read()函数一次读取文件的所有内容

1 file_obj = open("诗", 'rt') #使用读取模式打开文本文件

2 poem = file_obj.read() #读取文件中所有内容

3 file_obj.close() #关闭文件

4 print(poem)5 """

6 输出:7 离离原上草,一岁一枯荣。8 野火烧不尽,春风吹又生。9 远芳侵古道,晴翠接荒城。10 又送王孙去,萋萋满别情。11 """

- 同样可以分块读取

1 poem = ''

2 file_onj = open("诗", 'rt')3 chunk = 20 #每次读取20个字符

4 whileTrue:5 frag =file_onj.read(chunk)6 if not frag: #读到文件末尾时再次调用read()函数会返回空字符串,not frag为真,执行break

7 break

8 poem +=frag9

10 print(poem)11 """

12 输出:13 离离原上草,一岁一枯荣。14 野火烧不尽,春风吹又生。15 远芳侵古道,晴翠接荒城。16 又送王孙去,萋萋满别情。17 """

- 一行一行的读取

1 poem = ''

2 file_obj = open('诗', 'rt')3 whileTrue:4 line =file_obj.readline()5 if notline:6 break

7 poem +=line8

9 print(poem)10 """

11 输出:12 离离原上草,一岁一枯荣。13 野火烧不尽,春风吹又生。14 远芳侵古道,晴翠接荒城。15 又送王孙去,萋萋满别情。16 """

- 使用迭代器读取文件

1 poem = ''

2 file_obj = open("诗", 'rt')3 for line in file_obj: #效果相同,但代码更短

4 poem +=line5

6 print(poem)7 """

8 输出:9 离离原上草,一岁一枯荣。10 野火烧不尽,春风吹又生。11 远芳侵古道,晴翠接荒城。12 又送王孙去,萋萋满别情。13 """

- readlines():每次读取一行,并返回单行字符串的列表

1 file_obj = open("诗", 'rt')2 lines =file_obj.readlines()3 print(lines)4 for line inlines:5 print(line, end='')6

7 """

8 ['\n', ' 离离原上草,一岁一枯荣。\n', ' 野火烧不尽,春风吹又生。\n', ' 远芳侵古道,晴翠接荒城。\n', ' 又送王孙去,萋萋满别情。\n']9

10 离离原上草,一岁一枯荣。11 野火烧不尽,春风吹又生。12 远芳侵古道,晴翠接荒城。13 又送王孙去,萋萋满别情。14 """

## write()写入二进制文件

1 bin_data = bytes(range(0, 255)) #将序列转换为二进制数据

2 f = open('bin_file', 'wb') #以二进制文件的格式打开文件

3 f.write(bin_data) #写入

4 f.close() #关闭

- 分段写入

1 bin_data = bytes(range(0, 255))2 f = open('bin_file', 'wb')3 chunk = 100 #每次写入100个字节

4 offset =05 whileTrue:6 if offset >len(bin_date):7 break

8 f.write(bin_data[offset:chunk +offset])9 offset +=chunk10

11 f.close()

- 读取二进制文件

1 f = open('bin_file', 'rb')2 bin_data =f.read()3 f.close()

## 使用with自动关闭文件,with代码块执行完毕后自动关闭文件

1 with open("诗", 'rt') as f:2 poem =f.read()3

4 print(poem)5 """

6 输出:7 离离原上草,一岁一枯荣。8 野火烧不尽,春风吹又生。9 远芳侵古道,晴翠接荒城。10 又送王孙去,萋萋满别情。11 """

本文参考:

[美]Bill Lubanovic 《Python语言及其应用》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值