python之路_文件操作解析

文件操作

一、操作文件三要素
1. 路径    #文件存放的具体位置的路径
2. 编码    #文件打开的的编码格式:utf-8
3. 模式
  - rb:以字节的方式只读

obj = open('D:美女模特空姐护士联系方式.txt',mode='rb')
content = obj.read() 
obj.close()
print(content,type(content))   #字节类型

  - r: 读取utf-8编码数据,【转换】成unicode(str)编码的数据

#实例:
obj=open('D:美女模特空姐联系式.txt',encoding='utf-8',mode='r')  
content=obj.read()
obj.close()
print(content)    #字符串格式

  - r+:先读后写 

# 情况一:
obj = open('D:美女模特空姐护士联系式.txt',mode='r+',encoding='utf-8')
data = obj.read() 
# obj.write('6')     # 在最后继续写
obj.close()
print(data)
# 情况二:
obj = open('D:美女模特空姐护士联系式.txt',mode='r+',encoding='utf-8')
data = obj.read() 
obj.seek(3)
obj.write('6')      # 定位到指定位置写
obj.close()
print(data) 
说明: 
  data = obj.read()             # 读取所有文件内容
  data = obj.read(2)             # r模式:字符;rb模式:字节
  obj.seek(2)             # 永远是字节,指定指针位置
  obj.tell() # 读取当前指针的位置

  - r+b
  - wb

实例:
obj = open('美女.txt',mode='wb')
obj.write("海角-贾敏22222".encode('utf-8'))
obj.close()

  - w:只读

实例:
obj = open('美女.txt',mode='w',encoding='utf-8')
obj.write("海角-贾敏")
obj.close()

  - w+:先读后写
  - w+b

  - ab:只追加

#实例:
obj = open('美女.txt',mode='ab')
obj.write("龙哥".encode('utf-8'))
obj.close()

  - a:只追加

#实例:
obj = open('美女.txt',mode='a',encoding='utf-8')
obj.write("小红")
obj.close()

  - a+
  - a+b
功能:
  obj = open(文件路径,mode='rb')
  obj.read()
  obj.write()
  obj.seek()
  obj.tell()
  obj.close()
  obj.flush()
    obj.readline()
   
PS: 打开文件后,记着关闭文件

手动关闭:
  obj = open(文件路径,mode='rb')
  xxxx
  obj.close()
自动关闭:
  with open(文件路径,mode='rb') as obj:
  obj.read()    # 代码执行完毕后,自动关闭文件

二、文件逐行读取循环

例:

f=open('user.txt',encoding='utf-8',mode='r')
name = input("请输入用户名:")
pwd = input("请输入密码:")
for line in f:
    val= line.strip().split('|')
    if name==val[0] and pwd==val[1]:
        print("登陆成功!")

注释:循环结束指针并未回到文件起始位置两种方法可以实现:重新打开文件或者f.seek(0)将指针强制放回起始位置

三、文件操作重点方法介绍

1、只读方法实例:

f = open('file',encoding='utf-8')                #f文件句柄、文件操作符,默认只读模式
content1 = f.read()                              #read 读整个文件 返回一个字符串
f.seek(0)                                        #将指针重新定位到文件起始,否则后面read方法无法执行
content2 = f.readlines()                         #read 读整个文件 返回一个列表
f.seek(0)
content3 = f.readline()                          #readline 读一行
f.close()
print(content1)
print(content2)
print(content3)

2、只写方法实例:(慎重!会将原文件内容清空)

f = open('file','w',encoding='utf-8')  
f.write('nezha|18|male')                         #写一个字符串
f.writelines()                                  #将列表中的内容写入文件
f.close()  

3、读写方法实例:

f = open('file','r+',encoding='utf-8')
print(f.readline())
f.write('wusir|66|male')
f.close()
#输出结果说明:输出第一行,并在原文件夹最后追加写的内容

  说明:(1)打开文件的时候:不清空文件  (2)当用户读取操作之后,写的所有内容都变成追写  (3)当用户不执行读操作,写默认从开始覆盖

4、文件修改实例:

f = open('file',encoding='utf-8')
f2 = open('file_bak','w',encoding='utf-8')             #文件本身不存在
for line in f:
    user_list = line.split('|')
    print(user_list)
    user_list[0] = user_list[0]+'_somebody'
    #print(user_list)
    user_str = '|'.join(user_list)
    print(user_str)
    f2.write(user_str)
f.close()
f2.close()
import os                                              #模块- 用来和操作系统交互的模块
os.remove('file')                                      #删除一个文件
os.rename('file_bak','file')                           #重命名一个文件
原文地址:https://www.cnblogs.com/seven-007/p/7425955.html