一 文件操作

1 文件路径

2 编码方式:utf-8

3 动作mode:读 ,读写,写读..

例子:第一种写法:

 1 # f1 = open('D:\a.txt', encoding='utf-8', mode='r') 2 # content = f1.read() 3 # print(content) 4 # f1.close() 5  6  7 f1,文件句柄,文件对象,file,f_handle,file_handle,f_obj 8     open打开的指令,windows的指令, 9     windows 默认编码方式gbk,linux默认编码方式utf-8,mac utf-8。10 11 12  1,打开文件,产生文件句柄。13     2,操作文件句柄。14     3,关闭文件。

第二种写法:

# with open('log1',encoding='utf-8',mode='r') as f1:#     print(f1.read())#     f1.close()

 

二 文件的打开模式

 1 #1. 打开文件的模式有(默认为文本模式): 2 r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】 3 w,只写模式【不可读;不存在则创建;存在则清空内容】 4 a, 只追加写模式【不可读;不存在则创建;存在则只追加内容】 5  6 #2. 对于非文本文件,我们只能使用b模式,"b"表示以字节的方式操作(而所有文件也都是以字节的形式存储的,使用这种模式无需考虑文本文件的字符编码、图片文件的jgp格式、视频文件的avi格式) 7 rb  8 wb 9 ab10 注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码11 12 #3,‘+’模式(就是增加了一个功能)13 r+, 读写【可读,可写】14 w+,写读【可写,可读】15 a+, 写读【可写,可读】16 17 #4,以bytes类型操作的读写,写读,写读模式18 r+b, 读写【可读,可写】19 w+b,写读【可写,可读】20 a+b, 写读【可写,可读】

1 r+详细解释:读写

下面这个是新写入的东西不会被打印出来 1 # f1 = open('log1', encoding='utf-8', mode='r+') 2 # print(f1.read()) 3 # f1.write('666') 4 # f1.close()
这个是可以打印出来刚写完后的内容# f1 = open('log1',encoding='utf-8',mode='r+')# f1.seek(0,2)   ##把光标调整到最后,然后再去写,原来的内容不会被覆盖# f1.write('aaaaaaaaaaaa')# f1.seek(0) ##然后把光标调整到最前面,再去读# print(f1.read())# f1.close()

2 w只写,默认会清空之前的内容

# f1 = open('log2', encoding='utf-8', mode='w')# f1.write('abc是披着高富帅外衣的纯屌丝.....')# f1.close()

wb模式

# f1 = open('log2', mode='wb')# f1.write('alex是披着高富帅外衣的纯屌丝.....'.encode('utf-8'))# f1.close()

w+写读模式

1 # f1 = open('log2', encoding='utf-8', mode='w+')2 # print(f1.read())3 # f1.write('666')4 # f1.close()

a追加和a+(可写,可读)

 1 # f1 = open('log2', encoding='utf-8', mode='a') 2 # f1.write('\n老男孩') 3 # f1.close() 4  5 #a+可写可读 6 # f1 = open('log2', encoding='utf-8', mode='a+') 7 # f1.write('fdsafdsafdsagfdg') 8 # f1.seek(0) 9 # print(f1.read())10 # f1.close()

三 文件的改

#1,打开原文件,产生文件句柄。#2,创建新文件,产生文件句柄。#3,读取原文件,进行修改,写入新文件。#4,将原文件删除。#5,新文件重命名原文件。
1 import os2 with open('file_test', encoding='utf-8') as f1,\3     open('file_test.bak', encoding='utf-8', mode='w') as f2:4     for line in f1:5         new_line = line.replace('SB','alex')6         f2.write(new_line)7 os.remove('file_test')8 os.rename('file_test.bak','file_test')

四 文件的其他操作

#read read(n) readline() readlines() write() close  readable  writable

 1 # read 全部读出 2 # f1 = open('log1', encoding='utf-8') 3 # content = f1.read()  # 4 # print(content) 5 # f1.close() 6  7  8 #read(n) 9 # f1 = open('log1', encoding='utf-8')10 # content = f1.read(5)  # r 模式 按照字符读取。11 # print(content)12 # f1.close()13 14 # f1 = open('log1', mode='rb')15 # content = f1.read(3)  # rb模式 按照字节读取。16 # print(content.decode('utf-8'))17 # f1.close()18 19 #readline()按行读取 读几行,下面写几行20 # f1 = open('log1', encoding='utf-8')21 # print(f1.readline())22 # print(f1.readline())23 # print(f1.readline())24 # print(f1.readline())25 # f1.close()26 27 28 #readlines() 将每一行作为列表的一个元素并返回这个列表29 # f1 = open('log1', encoding='utf-8')30 # print(f1.readlines())31 # f1.close()32 33 34 #for循环35 # f1 = open('log1', encoding='utf-8')36 # for i in f1:37 #     print(i)38 # f1.close()

文件读取方式

tell指针

1 #tell 告诉指针的位置2 # f1 = open('log2', encoding='utf-8', mode='w')3 # f1.write('fdsafdsafdsagfdg')4 # print(f1.tell())5 # f1.close()6 #seek(参数),seek(0,2) 调至最后 按照字节去调整光标

五 编码转换

1 # s1 = b'\xd6\xd0\xb9\xfa'2 # s2 = s1.decode('gbk')3 # s3 = s2.encode('utf-8')4 # print(s3)  # b'\xe4\xb8\xad\xe5\x9b\xbd'5 # s1 = b'\xd6\xd0\xb9\xfa'.decode('gbk').encode('utf-8')6 # print(s1)

©著作权归作者所有:来自51CTO博客作者huningfei的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Oracle闪回恢复区(fast recovery area,FRA)
  2. Linux 文件 权限 操作
  3. CentOS 7.1静默安装11.2.0.3 64位单机数据库软件
  4. centos7下/etc/rc.local文件里配置的开机启动项不执行的解决办法
  5. 造成错误“ORA-12547: TNS:lost contact”的常见原因有哪些?
  6. 总结几个常用的系统安全设置(含DenyHosts)
  7. 如何批量Ping N个IP地址,掌握一个命令让你节省N小时,让老板给你加
  8. Gookit Banking Trojan中的后门利用分析
  9. 将磁盘误挂载到根分区下的问题处理记录

随机推荐

  1. Qunit:如何在不知道acceptCallCount的情况
  2. 如何从控制器内的javascript函数调用角范
  3. 使用单个函数隐藏多个输入
  4. 在laravel中的Http Post使用fetch api给
  5. 在JavaScript中进行文件处理,第四部分:对象
  6. 深入理解javascript函数进阶系列第二篇—
  7. 是否有一个简单的库将JSON对象渲染为树?
  8. HTML使用Canvas实现弹幕功能
  9. .addEventListener不是null [duplicate]
  10. 在Servlet和HTML页面之间处理函数调用和