Python-文件操作

一、作用


思考:文件操作包含什么?
答:打开、关闭、读、写、复制。。。
思考:文件操作的作用是什么?
答:读取内容、写入内容、备份内容

总结:文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

二、基本操作


2.1 文件操作的步骤
  1. 打开文件
  2. 读写等操作
  3. 关闭文件
    注意:可以只打开和关闭文件,不进行任何读写操作
    2.1.1 文件打开模式
    在python使用open函数,可以打开一个已经  存在的文件,或者创建一个新的文件
    open(name, mode) 
    # name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。 
    # mode:设置打开文件的模式(访问模式):只读、写入、追加等。
    
    • 打开方式


      文件打开方式.png
    • 访问模式主模式讲解
      ''' 
      测试: 
      1.访问模式对文件的影响 
      2.访问模式对write()的影响 
      3.访问模式是否可以省略 
      ''' 
      # r:如果文件不存在,报错;不支持写入操作,表示只读 
      f = open('test.txt','r') # test.txt文件存在,可以使用只读模式打开,并且文件成功关闭 
      # f = open('test1.txt','r') # test1.txt文件不存在,无法读取,报错 
      # f.write('aaa') # 只读模式无法写入数据 
      f.close() 
      
      # w:只写,文件如果不存在,则新建文件;执行写入,会覆盖原有内容 
      f1 = open('1.txt','w') # 新建1.txt文件 
      f1.write('aaa') # 写入'aaa' 
      f1.write('bbb') # 覆盖原内容写入'bbb' 
      f1.close()
      
      # a:追加,如果文件不存在,新建文件;在原内容的基础上,追加新内容 
      f2 = open('2.txt','a') 
      f2.write('aaa') 
      # f2.write('zxc') 
      f2.close() 
      
      #访问模式可以省略,默认为只读模式 
      f3 = open('test.txt')     
      f3 = open('100.txt') # 报错 
      f3.close()
      
    • 其他访问模式
      ''' 
      测试目标: 
      1.r+、w+、a+区别 
      2.文件指针对数据读取的影响 
      ''' 
      # r+:如果没有文件则报错;文件指针在开头,所以可以读取出来数据 
      # f = open('test.txt', 'r+') 
      # f = open('test1.txt', 'r+') 
      
      # w+:没有该文件会新建文件;文件指针在开头;新内容会覆盖旧内容 
      # f = open('test1.txt', 'w+') 
      # f = open('test.txt', 'w+') 
      
      # a+:没有该文件会新建文件;文件指针在结尾,无法读取数据(指针后面没有数据) 
      # f = open('test100.txt', 'a+') 
      f = open('test.txt', 'a+') 
      print(f.read()) 
      
      content = f.read() 
      print(content) 
      f.close()
      
    2.1.2 文件对象方法
    • 2.1.2.1 写
      • 语法
        对象.write('内容')

      • 注意:

        1. w 和 a 模式:如果文件不存在则创建该文件;如果文件存在, w 模式先清空再写入, a模式直接末尾追加。
        2. r 模式:如果文件不存在则报错。
      • 2.1.2.2 读

        • read()
          文件对象.read(num)

          num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读
          取文件中所有的数据。

        • readlines()
          readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

        • readline()
          一次读取一行内容

      • 2.1.2.3 移动文件指针

        • 语法
          文件对象.seek(偏移量,起始位置)

          起始位置:

          1. 0:文件开头
          2. 1:当前位置
          3. 2:文件结尾
      • 2.1.2.4 关闭
        文件对象.close()

三、文件备份

3.1 步骤
  1. 接收用户输入的文件名
  2. 规划备份文件名
  3. 备份文件写入数据
3.2 实现
# 1.用户输入目标文件 jinghang.mp3.txt 
old_name = input('请输入您要备份的文件名:') 
# print(old_name) 

# 2.规划备份文件的名字 
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串 
rfind index = old_name.rfind('.') 

# print(index) 
# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀 # 使用切片[开始:结尾:步长]获取原文件名称和后缀 
print(old_name[:index]) 
print(old_name[index:]) 
new_name = old_name[:index] + '[备份]' + old_name[index:] 
print(new_name) 

# 3.备份文件写入数据(确保数据和源文件一样) 
old_f = open(old_name,'rb') 
new_f = open(new_name,'wb') 
# 如果不确定目标文件大小,循环读取写入,当读取出来的数据为空则终止循环 
while True: 
    content = old_f.read(1024) 
    if len(content) == 0: 
          break 
    new_f.write(content) 
# 4.关闭文件 
old_f.close() 
new_f.close()
3.3 优化
# 2.规划备份文件的名字 
# 提取后缀 -- 找到后缀前的. -- 名字和后缀分离 -- 最右侧的点才是后缀的点 -- 字符串查找某个字串 rfind 
index = old_name.rfind('.') 
# print(index) 

if index > 0: 
    suffix = old_name[index:] 

# 以.分割开原文件名并在修改后进行拼接 新名字 = 原名字 + [备份] + 后缀 
# 使用切片[开始:结尾:步长]获取原文件名称和后缀 
# print(old_name[:index]) 
# print(old_name[index:])
# new_name = old_name[:index] + '[备份]' + old_name[index:] 
new_name = old_name[:index] + '[备份]' + suffix 
print(new_name)

四、文件和文件夹的操作


在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:

  1. 导入os模块
    import os
  2. 使用os模块相关功能
    os.函数名()
4.1 文件重命名

os.rename(目标文件名,新文件名)

4.2 删除文件

os.remove(目标文件名)

4.3 创建文件夹

os.mkdir(文件夹名字)

4.4 删除文件夹

os.rmdir(文件夹名字)

4.5 获取当前目录

os.getcwd()

4.6 改变默认目录

os.chdir(目录)

4.7 获取目录列表

os.listdir(目录)

你可能感兴趣的:(Python-文件操作)