文件处理是在程序终止后保存数据的好方法。来自计算机程序的数据被保存到一个文件中,以后可以访问。与许多其他编程语言一样,Python 提供了方便的方法来创建、打开、读取文件和将数据写入文件。
Python 中的文件处理:文件和文件路径 {#filehandlinginpythonfilesandfilepaths}
文件是从计算机程序中保存数据的快速替代方法。随机存取存储器 (RAM) 只能暂时存储数据,因为计算机系统关闭后所有以前的数据都会立即丢失。文件是首选,因为它们是计算机上更永久的数据存储点。文件是本地磁盘上存储数据的位置。它有两个基本属性:文件名及其路径。
使用操作系统模块 {#usingtheosmodule}
Python 提供了一个内置的操作系统模块,用于与我们计算机的操作系统进行交互。OS 模块具有有助于执行操作的接口(函数),例如在 Python 中浏览目录和文件、创建文件夹、识别文件路径等。
要使用 OS 模块,我们将其导入到我们的程序中,如下所示:
import os
如何获取当前工作目录 {#howtogetthecurrentworkingdirectory}
getcwd()
我们可以使用该方法在 Python 中获取当前工作目录("cwd") 。此方法以字符串形式返回我们当前工作的目录路径,如下面的代码片段所示:
import os
directory = os.getcwd()
print(directory)
>>>>
/home/ini/Dev/Tutorial/sitepoint
绝对路径与相对路径 {#absolutevsrelativepaths}
可以通过两种方式指定文件路径:通过绝对路径或相对路径。两个路径都指向当前文件位置。
文件的绝对路径声明其路径,从根文件夹开始。绝对路径如下所示:
/home/ini/Dev/Tutorial/sitepoint/filehandling.py
根文件夹(如上面的代码所示)home
位于 Linux 操作系统上。
文件的相对路径声明其相对于当前工作目录的路径。让我们看一个例子:
./sitepoint/filehandling.py
上面的代码显示了 Python 文件的相对路径filehandling.py
。
如何在 Python 中创建目录 {#howtocreateadirectoryinpython}
OS 模块有一种mkdir()
在 Python 中创建新文件夹或目录的方法。该mkdir()
方法采用一个参数------目录的名称------作为默认行为在当前目录中创建。请参阅下面的代码:
import os
os.mkdir("photos")
但是,我们可以通过指定文件路径在不同的位置创建目录。在下面的代码示例中,projects
文件夹中创建了一个文件Tutorial
夹:
os.mkdir("/home/ini/Dev/Tutorial/projects")
当我们检查Tutorial
文件夹内部时,我们会找到新创建的projects
文件夹。
如何更改当前工作目录 {#howtochangethecurrentworkingdirectory}
要在目录之间切换,请使用chdir()
方法。新路径作为参数传递给从当前工作目录更改为另一个工作目录的方法。
在前面的代码示例中创建一个新文件夹后,我们可以将目录更改为该projects
文件夹:
import os
os.chdir("/home/ini/Dev/Tutorial/projects")
要确认目录中的更改,请使用该getcwd()
方法,该方法返回当前工作目录的字符串:/home/ini/Dev./Tutorial/projects
。
如何在 Python 中删除文件或目录 {#howtodeletefilesordirectoriesinpython}
remove()
可以分别使用 OS 模块的和rmdir()
方法在 Python 中删除文件和目录。
在 Python 中删除文件,在os.remove()
方法中输入文件路径。删除文件时,如果文件不存在,程序会抛出FileNotFoundError
.
我们来看一个代码示例:
import os
os.remove("random.txt")
要删除或删除目录,请使用os.rmdir()
,传入要删除的目录路径,如下所示:
import os
os.rmdir("/home/ini/Dev/Tutorial/projects")
该projects
文件夹从文件夹中删除Tutorial
。
如何在 Python 中列出文件和目录 {#howtolistfilesanddirectoriesinpython}
要获得目录所有内容的概览,请使用os.listdir()
方法。此方法返回该特定文件夹中所有现有文件和目录的列表:
import os
print(os.listdir())
>>>>
['array.py', 'unittesting.py', 'search_replace.py', '__pycache__', 'pangram.txt', '.pytest_cache', 'exception.py', 'files.py', 'regex.py', 'filehandling.py']
Python 中的文件处理:读取和写入数据 {#filehandlinginpythonreadingandwritingdata}
Python 中的文件处理很简单,不像其他编程语言那样复杂。打开 Python 文件进行任何操作时,有不同的文件访问模式可供选择:
-
r
:打开文件进行读取。当文件不存在时,读取模式会抛出错误。 -
r+
:打开文件以将数据读取和写入文件对象。如果文件不存在,则会抛出错误。 -
w
:以这种方式打开文件写入数据。写模式覆盖现有数据并创建一个新的文件对象(如果它不存在)。 -
w+
:打开文件读写数据。在此模式下打开时,文件上的现有数据将被覆盖。 -
a
: 如果文件存在,追加模式追加到文件。如果没有现有文件,它还会创建一个新文件。它不会覆盖现有数据。 -
a+
:此模式打开一个文件用于追加和读取数据。 -
x
: create 模式用于在 Python 中创建文件。如果文件存在,则抛出错误。
添加b
到任何访问模式会将其从默认文本格式更改为二进制格式(例如,rb
、rb+
、wb
等)。
如何在 Python 中打开一个文件 {#howtoopenafileinpython}
要在 Python 中打开文件,请open()
使用该函数。它至少需要两个参数------文件名和模式描述------并返回一个文件对象。默认情况下,文件以文本模式打开以供读取,但我们可以指定是否需要二进制模式。
打开文件的简单语法如下所示:
f = open('filename', 'mode')
在这一步之后,如上面的代码所示,我们可以开始对文件对象进行读写操作。在默认模式下,文件总是以文本模式处理。
如何在 Python 中关闭文件 {#howtocloseafileinpython}
打开文件对象并执行文件处理操作后,我们关闭文件。它通常是在 Python 中读取或写入文件的最后一步。文件对象close()
方法用于关闭之前打开的文件。
在 Python 中关闭文件如下所示:
f = open('filename', 'mode')
// file operations, reading, writing or appending
f.close()
with
声明 {#thewithstatement}
在打开文件并执行文件操作后关闭文件是一种标准做法。某些文件打开后可能会错过关闭它们的机会。
该with
语句在其范围内完成最后一个文件处理操作后自动关闭文件。例如:
with open('random.txt', 'r') as f:
print(f.read())
>>>>
Hello world!
Hello world!
如上面的代码片段所示,with
语句在语句之后隐式关闭文件print
。
如何在 Python 中读取文件 {#howtoreadafileinpython}
在 Python 中有几种方法可以从文件中读取数据。read()
我们可以使用、readline()
和readlines()
方法读取文件的内容。
read()
方法
该read()
方法返回正在读取的文件中所有字符的字符串。指针位于文件内容的开头。默认模式是从文件开头读取到文件结尾,除非指定了字符数。
看看下面的代码片段:
f = open('random.txt', 'r')
print(f.read())
f.close()
>>>>
This is some random text.
Here is the second line.
The sky is blue.
Roses are red.
我们可以指定从文本文件中读取多少个字符。只需将字符数作为参数传递给read()
方法:
f = open('random.txt', 'r')
print(f.read(12))
f.close()
>>>>
This is some
如上例所示,解释器仅从整个文件中读取十二个字符。
readline()
方法
此方法一次从文件中读取一行。它从文件的开头读取并在找到换行符的地方停止。请参阅下面的代码示例:
f = open('random.txt', 'r')
print(f.readline())
f.close()
>>>>
This is some random text.
readlines()
方法
此方法返回正在读取的现有文件中所有行的列表。请参阅下面的代码片段:
f = open('random.txt', 'r')
print(f.readlines())
f.close()
>>>>
['This is some random text.\n', 'Here is the second line.\n', 'The sky is blue.\n', 'Roses are red.']
注意:当到达文件末尾时,所有读取文件流的方法都会返回一个空值。该seek()
方法将文件光标返回到文件的开头。
如何在 Python 中写入文件 {#howtowritetoafileinpython}
write()
尝试将数据写入文件时,Python 中的方法很有用。要写入打开的文件,访问模式应设置为以下之一:w
、w+
、a
、a+
等。再一次,默认是文本模式而不是二进制模式。
write()
方法
当我们想要将数据写入文本文件时,将字符串参数传递给此方法。请记住,如果文件存在,写入模式将覆盖现有数据:
f = open('random.txt', 'w')
f.write("Hello world!")
f.close()
writelines()
方法
此方法可帮助我们一次将多个字符串插入到一个文本文件中。通过将列表作为方法的参数传递,我们可以一次性将多行字符串写入文件:
words = ['The sky is blue', '\nRoses are red']
f = open('random.txt', 'w')
f.writelines(words)
f.close()
上面的代码显示了一个关闭的文件被打开,单词列表中的一些行被立即插入到random.txt
文本文件中。
结论 {#conclusion}
文件有两个重要的属性:文件名和路径。OS 模块帮助我们浏览目录并执行某些操作。Python 文件处理涉及使用多种方法在文件对象上打开、创建、读取和写入数据。
如果我们想要与文本或二进制文件中的内容进行交互,了解 Python 中的文件处理也很重要。始终确保在对文件执行操作后关闭文件。该with
语句使在 Python 中执行文件处理变得更加容易,因为它在我们完成后隐式关闭文件对象。