掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第1张图片

文章目录

  • 前言
  • 文件的基本操作
    • 打开文件操作
    • 关闭文件操作
    • 对文件进行操作
      • 1)只读文件操作
        • read()
        • readlines()
        • readline()
        • seek()
      • 2)只写文件操作
      • 3)文件追加操作
      • 读写、追加读写操作
        • 1. r+ 模式打开文件
        • 2. w+ 模式打开文件
        • 3. a+ 模式打开文件
      • 以二进制的形式打开文件并操作
  • 备份文件操作
    • 提示用户输入文件名,并生成一个有效的备份文件名
    • 将原文件中的数据拷贝到新文件中
  • 文件和文件夹操作
    • 1.文件重命名
    • 2.删除文件
    • 3.创建文件夹
    • 4.删除文件夹
    • 5.获取当前目录
    • 6.改变默认目录
    • 7.获取目录列表

前言

我们应该都知道,我们日常使用的电脑和手机其实很多的操作对象都是文件,我们的键盘和屏幕也可以类似看成是文件,文件在我们的日常生活中起着非常大的作用,因为文件可以持久的存储数据。而作为学习 python 的我们来说,文件操作的学习也是必不可少的,那么今天我将为您提供实用的知识和技巧,让您能够轻松应对各种文件操作任务。让我们一同探索Python文件操作的魅力,开拓数据处理的新境界吧!
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第2张图片

文件的基本操作

打开文件操作

open(name,mode)
  • name:指要打开的目标文件名的字符串(也可以是文件的具体路径)
  • mode:设置打开文件的模式(访问模式)

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第3张图片
我们可以使用一个变量来接收 open 返回的文件对象,为后面的操作做准备。

这里打开文件操作没多少需要注意的,唯一需要注意的就是,当我们以读的形式打开文件的时候,此文件必须存在,否则就会报错。

f = open('test.txt','r')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第4张图片

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第5张图片

这里我们提前创建一个 test.txt 文件。

f = open('test.txt','r')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第6张图片

关闭文件操作

当我们打开文件的时候,到最后要记住关闭这个文件,否则会一直占用着我们的资源。
文件对象.close() 关闭文件操作

f = open('test.txt','r')

f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第7张图片

对文件进行操作

1)只读文件操作

进行读文件操作的时候,我们需要以 读 的形式打开文件。
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第8张图片
我们先在 test.txt 文件中准备点数据,然后我们进行读文件操作。

read()

read(num) 当不传入num的时候,表示读取文件中的所有数据,如果传入num参数,表示读取num个字节的数据。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.read())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第9张图片

带有num参数

# 打开文件
f = open('test.txt','r')

# 操作文件
print(f.read(7))

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第10张图片
记住换行符也算一个字节

readlines()

readlines() 函数读取文件中的每一行,以列表的形式返回数据,每一行的数据是列表的每一个元素。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.readlines())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第11张图片
这里为什么会出现 \n ,因为我们在向文件中输入信息的时候敲了回车键,回车键 \n 也被认为是一个字符。

readline()

readline() 函数每一次就只读取文件的一行,再次调用readline() 函数的时候,会继续从下一行开始读取。

# 打开文件
f = open('test.txt','r')

# 进行文件操作
print(f.readline())
print(f.readline())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第12张图片

seek()

seek() 函数用来移动文件指针。
文件对象.seek(偏移量,起始位置)

偏移量单位为字节

当起始位置:

  • 为0时,表示文件开头
  • 为1时,表示文件当前位置
  • 为2时,表示文件的末尾
# 打开文件
f = open('test.txt','r')

# 进行文件操作
f.seek(2,0)  # 从与文件开头处偏移量为两个字节的位置开始
print(f.readline())
print(f.readline())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第13张图片

2)只写文件操作

当进行写文件操作的时候,需要以 写 的模式打开文件。

# 打开文件
f = open('test.txt','w')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第14张图片

当我们运行完这段代码的时候,我们发现 test.txt 文件里面的内容消失了。

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第15张图片
这是因为,当我们以 写 的模式打开文件的时候,文件指针会回到文件开头处,并且写入会覆盖原有内容。

不仅如此,当我们以 写 的模式打开文件的时候,如果文件不存在,会自动创建该文件。

我们先将之前创建的 test.txt 文件给删除了,然后以 写 的形式打开 test.txt 文件。

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第16张图片

# 打开文件
f = open('test.txt','w')

当我们运行这段代码的时候,我们会发现自动创建了 test.txt 文件。

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第17张图片

向文件中写入数据
文件对象.write()

# 打开文件
f = open('test.txt','w')

# 写入数据
f.write('abcdef')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第18张图片
后面的操作,原文件中默认数据为abcdef。

3)文件追加操作

使用文件追加操作的时候需要以 文件追加 的模式的打开文件,并且如果该文件不存在,也会自动创建一个文件。

# 打开文件
f = open('test.txt','a+')

# 操作文件
f.write('12345')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第19张图片

读写、追加读写操作

当我们以 w+、r+ 的模式打开文件的时候,可以对文件进行读和写的操作,但是我们需要注意文件指针的位置。

1. r+ 模式打开文件

# 打开文件
f = open('test.txt','r+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第20张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第21张图片

这里当我们写入数据的时候,为什么没有覆盖原数据呢?我们要注意文件指针的位置,当我们进行完读操作后,文件指针位于文件的末尾,然后写操作是从文件指针所在的位置开始写入的。

python 使用 r+ 模式打开文件具有以下特性:

  1. 读取和写入:r+模式可以同时进行读取和写入操作。它允许您在读取文件内容的同时,通过write()方法写入新的内容到文件中。这种模式非常适用于需要读取和修改文件内容的情况。

  2. 文件指针位置:在使用r+模式打开文件后,文件指针的初始位置将位于文件的开头。您可以使用seek()方法将文件指针移动到您需要读取或写入的位置。请注意,在进行写入操作时,新的内容将从文件指针的位置开始写入,可能会覆盖原有内容。

  3. 文件截断:r+模式不会自动截断文件。如果您在写入操作时,新的内容比原有内容更短,那么一部分原有内容可能仍然保留在文件中。因此,如果您希望完全覆盖文件并只保留新的内容,可以使用truncate()方法来截断文件,或者在打开文件时选择w模式。

  4. 文件不存在:如果使用r+模式打开的文件不存在,将会引发FileNotFoundError异常。因此,在使用r+模式打开文件之前,请确保文件已经存在或您有相应的错误处理机制。

这里我们针对第三种特性举一个例子:

test.txt 文件中含有数据abcdef。

# 打开文件
f = open('test.txt','r+')

# 操作文件
f.write('@@@@@')  
print(f.read())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第22张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第23张图片

当我们进行写入操作的时候,文件指针在文件开始处,写入数据从文件指针所在的位置开始写入,所以就会覆盖掉原有的五个长度的内容,文件指针也会随之移动,当进行读操作的时候也会从文件指针所在的位置开始读取。简单来说就是我们需要随时注意文件指针所在的位置。读写和追加操作都是从文件指针所在的位置开始的。

2. w+ 模式打开文件

test.txt 文件含有abcdef数据。

# 打开文件
f = open('test.txt','w+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第24张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第25张图片

当我们使用 w+ 模式打开文件的时候,如果文件不存在,则创建文件,如果文件存在,则会先清空文件中原有的数据。

3. a+ 模式打开文件

当以 a+ 模式打开文件时,文件指针默认会在文件的末尾,所以我们直接打印数据的时候,什么都打印不出来,这需要我们配合着seek() 函数来使用。

# 打开文件
f = open('test.txt','a+')

# 操作文件
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第26张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第27张图片

将文件指针设置到文件开头

# 打开文件
f = open('test.txt','a+')

# 操作文件
f.seek(0)
print(f.read())
f.write('@@@@@')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第28张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第29张图片

以二进制的形式打开文件并操作

以 rb、wb、ab、rb+、wb+、ab+的形式打开文件并操作,都是以二进制的形式展现和操作的,其他操作都是一样的。

以二进制的形式读

# 打开文件
f = open('test.txt','rb')

# 文件操作
print(f.read())

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第30张图片
以二进制的形式写
我们再写入的时候需要使用 b' ' 来表示写入的是二进制。

# 打开文件
f = open('test.txt','wb')

# 文件操作
f.write(b'zhangsan')

# 关闭文件
f.close()

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第31张图片
这里虽然我们看到的还是一样的,但其实它是以二进制的形式表现的。

备份文件操作

在生活中,我们也会经常遇到文件备份的操作,那么我将为大家来揭晓文件备份操作的原理。

通常系统会提示你输入要备份的文件的名称,然后会生成一个 原文件名[备份].后缀 的文件。

提示用户输入文件名,并生成一个有效的备份文件名

因为文件的后缀是由最后一个出现的 . 的以及 . 后面的字符串所组成的,所以我们需要找到最后一个出现的 . 的位置,并且根据 . 的位置是否为 0 来判断文件名的合法性。.txt 这种文件名就是不合法的。

old_name = input('请输入你要备份的文件的名称:')

index = old_name.rfind('.')  # 从后往前找,找到的第一个.的位置就是最后一个.的位置
if index > 0:  # 判断文件名的合法性
    postfix = old_name[index:]
    
new_name = old_name[:index] + '[备份]' + postfix  # 组合成新的备份文件名

将原文件中的数据拷贝到新文件中

因为原文件中数据可能较多,一次拷贝可能会出现问题,所以我们分多次拷贝,一次拷贝部分数据。

# 打开原文件,并创建备份文件
old_f = open(old_name,'r')
new_f = open(new_name,'w')

while True:
    con = old_f.read(1024)
    if len(con) == 0:  # 当读取的内容长度为0时,表明原文件内容已读取完
        break
    new_f.write(con)

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第32张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第33张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第34张图片
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第35张图片

文件和文件夹操作

在 python 中,文件和文件夹操作需要借助模块 os 里面的相关功能,所以我们需要导入 os 模块 import os

1.文件重命名

os.rename(原文件名,新文件名)
import os
os.rename('test.txt','test1.txt')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第36张图片

2.删除文件

os.remove(文件名)
os.remove('test1.txt')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第37张图片

3.创建文件夹

os.mkdir(文件夹名)
os.mkdir('aa')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第38张图片

4.删除文件夹

os.rmdir(文件夹)
os.rmdir('aa')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第39张图片

5.获取当前目录

os.getcwd()
print(os.getcwd())

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第40张图片

6.改变默认目录

os.chdir(目录)

如果我们想要在文件夹 aa 下面再创建一个文件夹 bb 该怎么办呢?

os.mkdir('aa')
os.mkdir('bb')

这样可以吗?
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第41张图片
显然不行,aa和bb属于同一级目录,这是因为默认目录是这个:
掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第42张图片
添加文件夹也是在这个默认目录下添加的,那么如果我们想要在aa文件夹下创建bb文件夹,就需要我们更改默认目录。

os.mkdir('aa')
os.chdir('aa')  # 更改默认目录为aa
os.mkdir('bb')

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第43张图片

7.获取目录列表

os.listdir(目录)

os.listdir(目录) 会以列表的形式返回该目录下的所有文件。

print(os.listdir('aa'))

掌握Python文件操作的绝招:打造数据之径,揭开文件操作的神秘面纱_第44张图片

你可能感兴趣的:(python,python,开发语言)