Python文件操作 – 使用Python读写文件

在本教程中,我们将学习Python中的不同文件操作。我们将介绍如何使用Python读取文件、写入文件、删除文件等等。所以,让我们立即开始吧。

在Python中处理文件

在上一个教程中,我们使用控制台来获取输入。现在,我们将使用文件来获取输入。这意味着,我们将从文件中读取数据并将数据写入文件。为此,我们需要遵循一些步骤。这些步骤包括:

  1. 打开文件
  2. 从文件中获取输入/向文件写入输出
  3. 关闭文件

我们还将学习一些有用的操作,如复制文件和删除文件。

为什么需要Python中的文件操作?

在处理机器学习问题中使用大型数据集时,使用文件是一种基本需求。由于Python是数据科学中主要使用的语言,您需要熟练掌握Python提供的不同文件操作。

所以,让我们在这里探索一些Python文件操作。

1. 使用open()函数在Python中打开文件

在Python中处理文件的第一步是学习如何打开文件。您可以使用open()方法打开文件。

Python中的open()函数接受两个参数。第一个是文件名以及完整路径,第二个是文件打开模式。

下面,我列出了一些常见的文件读取模式:

  • ‘r’:此模式表示文件仅用于读取
  • ‘w’:此模式表示文件仅用于写入。如果包含该名称的文件不存在,它将创建一个新文件
  • ‘a’:此模式表示程序的输出将追加到该文件的先前输出中
  • ‘r+’:此模式表示文件既可读也可写

此外,对于Windows操作系统,您可以添加‘b’以以二进制方式访问文件。这是因为Windows区分二进制文本文件和普通文本文件。

假设我们将一个名为‘file.txt’的文本文件放在与我们的代码相同的目录中。现在我们想要打开那个文件。

然而,open(filename, mode)函数返回一个文件对象。有了该文件对象,您可以进行进一步的操作。

#directory:   /home/imtiaz/code.py
text_file = open('file.txt','r')

#另一种使用完整位置的方法
text_file2 = open('/home/imtiaz/file.txt','r')
print('First Method')
print(text_file)

print('Second Method')
print(text_file2)

以下代码的输出将是

================== RESTART: /home/imtiaz/code.py ==================
First Method

Second Method

>>>

2. Python中读写文件

Python提供了各种方法来读写文件,其中每个函数的行为都不同。需要注意的一点是文件操作模式。要读取文件,您需要在读取或写入模式下打开文件。而要在Python中写入文件,则需要将文件打开为写入模式。

以下是Python中一些允许您读写文件的函数:

  • read():此函数读取整个文件并返回一个字符串
  • readline():此函数从文件中读取行并返回字符串。如果调用了第n次,则获取第n行。
  • readlines():此函数返回一个列表,其中每个元素是该文件的单行。
  • readlines():此函数返回一个列表,其中每个元素是该文件的单行。
  • write():此函数将一组固定字符写入文件。
  • writelines():此函数将字符串列表写入文件。
  • append():此函数将字符串附加到文件,而不是覆盖文件。

让我们以一个示例文件“abc.txt”为例,并使用for循环从文件中读取各行:

#打开文件
text_file = open('/Users/pankaj/abc.txt','r')

#获取行的列表
line_list = text_file.readlines();

#对列表中的每一行,打印该行
for line in line_list:
    print(line)

text_file.close() #别忘了关闭文件

输出:

现在,我们知道如何在Python中读取文件了,让我们继续在这里使用writelines()函数执行写操作。

#打开文件
text_file = open('/Users/pankaj/file.txt','w')

#初始化一个空列表
word_list= []

#迭代4次
for i in range (1, 5):
    print("Please enter data: ")
    line = input() #获取输入
    word_list.append(line) #添加到列表中


text_file.writelines(word_list) #向文件写入4个单词

text_file.close() #别忘了关闭文件

输出

3. 使用shutil()方法在Python中复制文件

我们可以使用shutil模块在Python中复制文件。这个实用程序允许我们在不同文件上在Python中执行复制和移动操作。让我们通过一个例子来学习:

import shutil

shutil.copy2('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copy2.txt')

#另一种复制文件的方式

shutil.copyfile('/Users/pankaj/abc.txt', '/Users/pankaj/abc_copyfile.txt')

print("File Copy Done")

4. 使用shutil.os.remove()方法在Python中删除文件

Python的shutil模块提供了remove()方法,用于从文件系统中删除文件。让我们看看如何在Python中执行删除操作。

import shutil
import os

#删除文件的两种方式
shutil.os.remove('/Users/pankaj/abc_copy2.txt')

os.remove('/Users/pankaj/abc_copy2.txt')

5. 使用close()方法在Python中关闭打开的文件

当您在Python中打开文件时,非常重要的是在进行更改后关闭文件。这样可以保存您之前所做的任何更改,将文件从内存中移除,并防止在程序中进一步读取或写入。

在Python中关闭已打开文件的语法:

fileobject.close()

如果我们继续从之前的示例中读取文件,这里是如何关闭文件的:

text_file = open('/Users/pankaj/abc.txt','r')
# 在这里进行一些文件操作

text_file.close()

此外,如果使用with语句块,就可以避免手动关闭文件。一旦执行了with语句块,文件就会被关闭,并且不再可用于读取和写入。

6. Python FileNotFoundError

在Python中使用文件时,经常会遇到FileNotFoundError。通过在创建文件对象时提供完整的文件路径,可以很容易地避免这种情况。

  File "/Users/pankaj/Desktop/string1.py", line 2, in <module>
    text_file = open('/Users/pankaj/Desktop/abc.txt','r')
FileNotFoundError: [Errno 2] No such file or directory: '/Users/pankaj/Desktop/abc.txt'

要解决FileNotFoundError,只需验证您为文件打开方法提供的路径是否正确即可。

结论

这些是在Python上的文件操作。在Python中,您可以使用许多其他方法来处理文件,包括读取CSV数据等。这里有一篇关于如何使用Pandas模块在Python中读取CSV数据集的文章。

I hope you enjoyed reading the article! Happy learning 🙂

**参考资料:
**
**https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files

Source:
https://www.digitalocean.com/community/tutorials/python-read-file-open-write-delete-copy