Python中的文件操作基础

引言

        在Python编程中,文件操作是一项基础且重要的技能。无论是读取数据、保存结果,还是进行文件管理,掌握如何在Python中高效地操作文件对于任何开发者来说都是必要的。本文将详细介绍Python中进行文件操作的基本方法,包括文件的打开、读取、写入、关闭以及一些高级操作。

一、打开文件

        在python中,使用内置的open()函数来打开一个文件。这个函数需要至少一个参数:文件路径。另外通过模式参数来制定打开文件的模式,例如只读(r)、只写(w)追加(a)等。

    注意:

    r  ->  rt   -> read text 以文本方式打开文件读,文件存在,打开成功,文件不存在,打开失败
    w -> wt  -> write text 以文本方式打开文件写,不管文件是否存在,都会新创建一个新文件
    a  -> at  -> append text 以文件方式打开文件追加,文件不存在,创建文件,文件存在,那么打开文件然后将光标移动到文件的最后

     rb      以二进制形式打开文件读取
     wb     以二进制形式打开文件写入
     ab      以二进制形式打开文件追加

# 打开文件进行读取
file = open('example.txt', 'r')

# 打开文件进行写入
file = open('example.txt', 'w')

二、读取文件

打开文件后,可以使用read(), readline(), 或 readlines()等方法来读取文件内容。

read()

  read(size=-1)方法用于从文件中读取并返回文件内容。如果提供了size参数,它将读取并返回最多size个字符(在文本模式下)或size个字节(在二进制模式下)【读取指定的字节数的文件内容  ,如果文件最后没有内容了,那么read的返回值是空字符串 , "" 一般指定4096】。如果没有指定size或指定为负数,则会读取并返回整个文件。

# 打开文件
with open('example.txt', 'r') as file:
    # 读取整个文件内容
    content = file.read()

# 输出文件内容
print(content)

readline()

  readline(size=-1)方法用于从文件中读取一行。如果提供了size参数,它将读取该行的最多size个字符。即使size参数被指定,readline()也会在到达行末或文件末尾时停止读取。通常,readline()方法在每次调用时读取文件的下一行。

# 打开文件
with open('example.txt', 'r') as file:
    # 逐行读取文件内容
    line = file.readline()
    while line:
        print(line, end='')  # 使用end=''来防止打印额外的换行符
        line = file.readline()

readlines()

  readlines(hint=-1)方法用于从文件中读取所有行,并将它们作为字符串列表返回。每个列表元素代表文件的一行。如果提供了hint参数,则会读取总字符数大约为hint的行数,这可以用于读取大文件的开始部分。

# 打开文件
with open('example.txt', 'r') as file:
    # 读取所有行并返回列表
    lines = file.readlines()

# 输出文件的每一行
for line in lines:
    print(line, end='')

注意事项:

1、在处理大文件时,应该避免使用read()和readline(),因为它们会一次性的将整个文件加载到内存中。相反,逐行读取(使用readline()或迭代器)更加内高效。

2、readlines()可以方便地一次读取所有行,但在处理非常大的文件时,应考虑逐行读取。

3、文件读取完成后,文件指针会移动到文件末尾,再次调用读取方法将返回空字符串或空列表。

4、使用with语句可以确保文件在读取完成后自动关闭,这是一种良好的编程习惯。

三、写入文件

写入文件同样简单,我们可以使用write()writelines()方法来将字符串写入文件。

前提: 使用该函数时,打开文件时,必须要给定写入权限,要具有写入模式

# 写入字符串到文件
file.write('Hello, Python!')

# 将字符串列表写入文件
lines = ['Hello, Python!', 'Welcome to file operations.']
file.writelines(lines)

四、关闭文件

完成文件操作后,我们应该使用close()方法来关闭文件,以释放系统资源。

file.close()

五、使用with语句进行文件操作

    为了确保文件在使用后正确关闭,推荐使用with语句来处理文件操作。这样可以自动管理文件的打开和关闭,即使在发生异常时也能保证文件被关闭。

# 使用with语句读取文件
with open('example.txt', 'r') as file:
    content = file.read()

# 使用with语句写入文件
with open('example.txt', 'w') as file:
    file.write('Goodbye, Python!')

六、高级文件操作

    除了基本的文件读写,Python还提供了一系列高级文件操作,如文件的复制、移动、删除等。这些操作通常通过osshutil模块来实现。

import os
import shutil

# os

# 重命名文件
os.rename('old_name.txt', 'new_name.txt'

# 创建目录(如果目录存在,会报错)
os.mkdir('test_dir')

# 获得当前工作目录(即当前所在位置)getcwd(current work directory)
cwd = os.getcwd()
print(cwd)

# 获取当前目录下文件列表
file_list = os.listdir('.')
print(file_list)
for file in file_list:
    print(file)

# 删除文件
os.remove('a.txt')

# 删除目录(文件夹) 文件夹不为空不能删除(需要先把里面的文件删除完再删除文件夹)
os.rmdir('C:/a/b/c')
# 复制文件
shutil.copy('source.txt', 'destination.txt')

# 移动文件
shutil.move('source.txt', 'destination_directory')

# 删除文件
os.remove('unnecessary_file.txt')

练习-复制一个文件

以下是复制文件的逻辑,有助于代码的编写

def file_copy(src,dst):
    # 以读取的方式打开源文件
    file_r = open(src,'r')
    # 以写的方式打开目标文件
    file_w = open(dst,'w')
    # 循环
    while Ture:
        # 读取文件内容
        content = file_r.read(1024)
        # 将读取的文件内容,写入到另一个文件中
        if content == '':
            print('文件拷贝成功')
            break
        file_w.write(content)
    
    # 关闭文件
    file_r.close()
    file_w.close()

#调用函数
file_copy('a.txt','b.txt')

结语:

    文件操作是Python编程中不可或缺的一部分。通过本文的介绍,您应该能够掌握如何在Python中进行基本的文件读取和写入操作,以及一些常见的高级文件管理技巧。实践是最好的学习方式,不妨通过一些小项目来锻炼您的文件操作技能。记住,合理运用with语句能够让您的代码更加健壮和安全。