python入门:文件

python文件处理

  1. 文件操作分为读、写、修改

1.1 文件的读

示例1:

1

2

3

4

= open(file='user_list', mode='r', encoding='utf-8')

data = f.read()

f.close()

print(data)

  • file='user_list'         #表示文件路径
  • mode=‘r’                # 表示只读
  • encoding=‘utf-8’    #表示硬盘上的0101010 按照utf-8的规则去“断句”,再将“断句”后的每一段0101010转换成Unicode的01010101,Unicode对照表中有01010101和字符的对应关系
  • f.read() 表示读取所有内容,内容是已经转换完毕的字符串
  • f.close()  表示关闭文件

示例2:

1

2

3

4

= open(file='user_list', mode='rb')

data = f.read()

f.close()

print(data)

  

  • file='user_list'         #表示文件路径
  • mode=‘rb’                # 表示只读
  • f.read() 表示读取所有内容,内容是硬盘上原来以某种编码保存的010101010,即:某种编码格式的字节类型
  • f.close()  表示关闭文件

 

示例2和示例1的区别在哪?

    在于示例2打开文件时并未指定encoding,只是为啥?是因为直接以rb模式打开了文件,rb是指二进制模式,数据读到内存里直接是bytes格式,如果想看内容,还需要手动decode,因此在文件打开阶段,不需要指定编码

问:假如不知道要处理的文件是什么编码怎么办呢?

1

2

3

4

5

6

7

8

import chardet

= open(file='user_list', mode='rb')

data = f.read()

f.close()

result = chardet.detect(open('user_list', mode='rb').read())

print(result)

  

循环文件

 1.2  写文件

1

2

3

= open(file='user_list1', mode='w', encoding='utf-8')

f.write('lala Du,26,13898424612,Operation,2017-07-02')

f.close()

  上述操作语法解释:

  • 1

    file='user_list1'       # 表示文件路径

  • mode = ‘w’                               # 表示只写
  • encoding=‘utf-8’                      # 将要写入的Unicode字符串编码成utf-8格式
  • f.write(....)                                       # 表示写入内容,写入的内容是Unicode字符串类型,内部会根据encoding转换为指定编码的01101010101,即:字节类型

二进制模式写:wb

1.3 追加

把内容追加到文件尾部

1

2

3

= open(file='user_list1', mode='a', encoding='gbk')

f.write('\nTom,28,13898424613,Operation,2017-07-02')

f.close()

  

注意:

  • 文件操作时,以“a”或“ab”模式打开,则只能追加,即:在原来内容的尾部追加内容
  • 写入到硬盘上时,必须是某种编码的0101010,打开时需要注意:

                ab,写入时需要直接传入以某种编码的0100101,即:字节类型

                 a和 encoding,写入时需要传入Unicode字符串,内部会根据encoding指定的编码将Unicode字符串转换为编码的010101010

1.4  读写混合模式

1

2

3

4

5

= open(file='user_list1', mode='r+', encoding='gbk')

data = f.read()     # 可以读内容

print(data)

f.write('\nJacke,30,13898424616,Operation,2017-07-02')   # 可以写

f.close()

  结果:

 1.5 修改文件

 尝试直接以r+模式打开文件,默认会把新增的内容追加到文件最后面,想要修改中间的内容,怎么办?

可以用seek(中间位置)

1

2

3

4

= open(file='user_list1', mode='r+', encoding='utf-8')

f.seek(6)

f.write("测试工程师")

f.close()

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值