python-day8

一.文件操作open()文件句柄

  open()打开一个文件,获取的是文件句柄

1 f = open('hui',mode='r',encoding='utf-8')
2 # 读取文件中的内容
3 #f(文件名) 'hui'文件名  mode=模式 encoding='编码格式'
4 # read(n)  读取n个字符
5 content = f.read(3)
6 print(content)
7 f.close()
View Code

  read()

  readine()

  readines()

  write

  for line in f : 遍历文件中的内容

  路径的问题:.

    1.绝对路径

      从磁盘根目录寻找

    2.相对路径

      从当前程序运行的文件夹内寻找

 1 # line= f.readline()#读取一行
 2 # print(line.strip())#strip()去掉空白.空格 	 

 3 # line = f.readline()#在读取一行
 4 # print(line)
 5 
 6 # lst = f.readlines()#一次性全都读取出来,返回的是列表
 7 # print(lst)
 8 
 9 # 路径的问题
10 # 两种:
11 #     1.绝对路径(当文件路径是固定的时候)
12 #         从磁盘根目录找文件.Windows下用的就是c,d,e,f  linux:   userinxxxx
13 #     2相对路径(用的多)
14 #         相对路径对于当前程序所在的文件夹
15 #         ../表示上一层文件夹
16 
17 
18 # 
  	  转义字符.有固定的含义,推荐用r      \
19 # f = open(r'文件路径',mode='r',encoding='utf-8')
20 
21 # f = open('hui',mode='r',encoding='utf-8')
22 # while 1:
23 #     line = f.readline()
24 #     print(line)
25 
26 # *********************
27 # 文件句柄是一个可迭代对象
28 f = open('hui',mode='r',encoding='utf-8')
29 for i in f:#读取文件中的内容,一行一行的读取,每次读取的内容交给前面的变量
30     print(i.strip())
View Code

二.文件操作的相关模式mode

  r:只读

  w:只写,先清空里面的内容,然后再写入

  a:追加

 1 # w 先清空在写
 2 # f = open('new_file',mode='w',encoding='utf-8')#可以帮我们创建文件
 3 # f.write('
')
 4 # f.write('太白')
 5 # f.write('很白')
 6 # f.write('特别白')
 7 # f.close()
 8 
 9 # a 添加
10 # f = open('taihei',mode='r',encoding='utf-8')
11 # f.write('太黑')
12 # f.write('很黑
')
13 # f.write('特别黑
')
14 # print(f.read())
15 # f.close()
16 
17 # 文本文件的复制
18 # f1 = open('文件路径',mode='r',encoding='utf-8')
19 # f2 = open('新文件路径',mode='w',encoding='utf-8')
20 # for i in f1:
21 #     f2.write(i)
22 # f1.close()
23 # f2.close()
View Code

  r+:先读取内容后写,无论你读取多少内容,再次写入的时候都是在末尾

  w+:清空然后再操作

  a+:不论光标在何处写入的时候都是在末尾

 1 #r+
 2 # f = open('文件名',mode='r+',encoding='utf-8')
 3 # content = f.read()
 4 # f.write('123')
 5 # print(content)
 6 
 7 #w+
 8 # f  = open('文件名',mode='w+',encoding='utf-8')#先清空然后再操作
 9 # f.write('123456')
10 # content = f.read()#写入东西之后,光标在末尾,读取不到内容的
11 # print(content)
12 # f.close()
13 
14 #a+
15 f = open('文件名',mode='a+',encoding='utf-8')
16 f.write('6666666666')
17 content = f.read()
18 print(content)
19 f.close()
View Code

  非文本文件b-bytes 读取和写入的是字节,用来操作非文本文件(图片,音频,视频)

  rb

  wb

  ab

1 # 从bytes角度来复制的,适用于所有文件
2 # f1 = open('图片路径',mode='rb')
3 # f2 = open('复制到的路径',mode='wb')
4 # for i in f1:#分批量的读取内容
5 #     f2.write(i)#出来的结果可以使用read或者write.根据mode来看
6 # f1.close()#关闭文件
7 # f2.close()
View Code

  r+b

  w+b

  a+b  

  +扩展

 

三.相关操作

  1.seek()移动光标(重点)

    seek(0)开头

    seek(0,2)移动到末尾

  2.tell()获取光标所在的位置

  3.truncate()截断文件

 1 # 光标
 2 # f = open('文件名',mode='r',encoding='utf-8')
 3 # info = f.read(3)
 4 # print(info)
 5 # f.seek(0)#移动光标
 6 # info = f.read(3)
 7 # print(info)
 8 
 9 # seek(参数1,参数2)
10 # 参数1表示的是偏移量,移动多少个单位
11 # 参数2表示从什么位置进行偏移
12 # 0:开头
13 # 1:当前位置
14 # 2:末尾
15 
16 # 把光标移动到文件的开头:seek(0)
17 # 把光标移动到末尾:seek(0,2)
18 # print(f.read(2))#读取2个字符
19 # f.seek(0)#光标回到开头
20 # print(f.read(2))#读取2个字符
21 
22 # tell()  #程序返回当前光标的位置
23 # info = f.read(3)
24 # print(info)
25 # print(f.tell()) #获取光标位置
26 
27 # truncate 截断文件,慎用
28 
29 #尽量不要瞎测试,w,w+
30 # f = open('文件名',mode='r+',encoding='utf-8')
31 # f.seek(5) #光标移动到5
32 # f.truncate()#默认从开头截取到光标位置
33 # f.truncate(3)#从头截取到3
34 # f.close()
View Code

四.文件修改

  with open(xxx) as 句柄,

    open(xxxx) as xxx

  不用手动关闭文件句柄

  文件修改的步骤

    1.从源文件中读取数据

    2.写入到副本文件中

    3.删除源文件

    4.把副本重命名成源文件

  import os

  os.remove()

  os.rename()

 1 # import os#导入系统模块
 2 # import time#导入时间模块
 3 # # 优点: 不用关闭句柄,自动关闭连接
 4 # with open('文件名',mode='r',encoding='utf-8') as f1,
 5 #     open('文件名_副本',mode='w',encoding='utf-8') as f2:
 6 #     for line in f1:
 7 #         line = line.replace('6','8')
 8 #         f2.write(line)
 9 # time.sleep(5)
10 # os.remove('文件名')#删除源文件
11 # time.sleep(5)
12 # os.rename('
View Code
原文地址:https://www.cnblogs.com/Thui/p/9857151.html