python入门:文件

python文件处理

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

1.1 文件的读

示例1:

f = 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:

f = 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,因此在文件打开阶段,不需要指定编码

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

import chardet
f = open(file='user_list', mode='rb')
data = f.read()
f.close()

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

print(result)

  

循环文件

 1.2  写文件

f = open(file='user_list1', mode='w', encoding='utf-8')
f.write('lala Du,26,13898424612,Operation,2017-07-02')
f.close()

  上述操作语法解释:

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

二进制模式写:wb

1.3 追加

把内容追加到文件尾部

f = open(file='user_list1', mode='a', encoding='gbk')
f.write('
Tom,28,13898424613,Operation,2017-07-02')
f.close()

  

注意:

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

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

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

1.4  读写混合模式

f = open(file='user_list1', mode='r+', encoding='gbk')
data = f.read()     # 可以读内容
print(data)
f.write('
Jacke,30,13898424616,Operation,2017-07-02')   # 可以写
f.close()

  结果:

 1.5 修改文件

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

可以用seek(中间位置)

f = open(file='user_list1', mode='r+', encoding='utf-8')
f.seek(6)
f.write("测试工程师")
f.close()

  

原文地址:https://www.cnblogs.com/mike-liu/p/8916635.html