Python中的文件处理

如果您查看台式机的背景,您会注意到什么? 文件无处不在,对不对? 我知道我们经常习惯于拥有混乱的桌面习惯,但是这里的要点是我们似乎处理很多文件。

谈到Python,使用Python处理文件当然是可能的,这就是我在本教程中向您介绍的内容。

开启档案

为了对某个文件进行任何操作,我们必须执行的第一个自然过程是打开它。 继续下载Text.txt ,这是我们将用于进行实验的文件。

为了使用Python打开文件,我们将使用open()函数。 如文档中所述:

open()返回文件对象,并且最常与两个参数一起使用:open(文件名,模式)

如上所述,在举一个例子之前, open()函数将使用两个参数: filenamemode 。 这种设置参数的方法实际上类似于stdio的(即C) fopen()Filename只是您要打开的文件的名称。 如果该文件不在当前目录中,则还可以提供该文件的路径。 和mode是一个字符串值,指示如何打开文件。 下表显示了不同模式的示例:

模式 描述
[R 打开文本文件以供阅读。 流位于文件的开头
r + 开放供阅读和写作。 流位于文件的开头
w 截短为零长度或创建要写入的文本文件。 流位于文件的开头
w + 开放供阅读和写作。 如果该文件不存在,则创建该文件,否则该文件将被截断。 流位于文件的开头
一个 开放写作。 如果文件不存在,则创建该文件。 流位于文件末尾。 随后对文件的写入将始终在文件的当前结尾处结束
a + 开放供阅读和写作。 如果文件不存在,则创建该文件。 流位于文件末尾。 随后对文件的写入将始终在文件的当前结尾处结束

您还可以在Python文档中查看其他模式。

让我们继续打开文件Text.txt 。 只需一行即可完成此操作,如下所示:

text_file = open('Text.txt')

如您在这里看到的,我们没有指定mode 。 要知道open()使用的默认模式,请输入print text_file ,在这种情况下,您将获得以下信息:

<open file 'Text.txt', mode 'r' at 0x10728c810>

因此,如您所见,默认模式为r 。 此时,您可能没有发现任何事件,但是在此步骤中已完成打开文件的操作。

读取文件

该文件就像一个秘密盒子。 我们在上一步中打开了它,现在我们想看看里面是什么。 读取文件在Python中很简单,可以使用read()方法来实现,如下所示:

text_file.read()

为了查看上print text_file.read()语句的输出,请输入print text_file.read() 。 在这种情况下,秘密(内容)将被泄露!

I'm enjoying learning about "file handling" in Python

继续,然后再次键入print text_file.read() ,您会注意到什么? 您可以看到一个字符串已输出。 这是因为与一次读取一行readline()readline()相比,您已经读取了整个文件。

写入文件

也许您想在我们已经阅读的文件中添加(写)另一个句子或段落。 假设您想添加以下句子: and I'm looking for more 。 可以在Python中使用write()方法完成此操作,如下所示:

text_file.write('and I\'m looking for more')

糟糕,我们在这里遇到错误:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    text_file.write(' and I\'m looking for more')
IOError: File not open for writing

你明白了吗? 还记得我们在第一部分中按如下所示open('Text.txt')文件时: open('Text.txt')吗? 由于在该示例中未指定mode ,因此将模式(默认)设置为r 。 这将只允许我们读取文件,在此示例中,我们尝试写入文件。 因此,让我们再次打开文件,但使用write w模式:

text_file = open('Text.txt', 'w')

现在尝试使用上面的代码再次写出该句子。 你得到了什么? 如前两节所示,让我们open()print read()文件,以查看文件内部内容:

text_file = open('Text.txt','r')
print text_file.read()

该脚本的输出为:

and I'm looking for more

您期望看到这个新句子以及原始句子,而I'm enjoying learning about "file handling" in Python ,不是吗? 那么它消失在哪里呢? w模式似乎覆盖了正在写入的文件的内容。 如果您有兴趣保留文档的原始文本,可以使用a (附加)模式:

text_file = open('Text.txt','a')
text_file.write(' and I\'m looking for more')

在这种情况下,您应该在Text.txt获得预期的内容:

I'm enjoying learning about "file handling" in Python and I'm looking for more

让我们将到目前为止所学的一切放在一起:

with open('Text.txt', 'r+') as text_file:
    print 'The file content BEFORE writing content:'
    print text_file.read()
    text_file.write(' and I\'m looking for more')
    print 'The file content AFTER writing content:'
    text_file.seek(0)
    print text_file.read()

我们在这里有一些新东西。 让我快速澄清一下。 with...as允许我们打开文件,处理文件并确保已关闭文件。 另一方面, seek()允许我们将指针(即光标)移动到文件的其他部分。 例如, seek(0)表示参考点将是文件的开头。

继续并运行脚本,然后查看输出结果。

关闭档案

习惯在读取或写入后关闭文件,这样可以释放内存。 是的,脚本完成后,Python会自动关闭文件,但是如果您事先不这样做,则任何打开的文件都会占用Python可能会受益的空间。 使用close()方法可以简单地关闭文件。

让我们来看这个例子:

text_file = open('Text.txt','a+')
print text_file.read()
text_file.write(' and I\'m looking for more')

如果在read()之后关闭文件,将会发生什么? 也就是说, text_file.close() 。 Python将给出以下异常:

Traceback (most recent call last):
  File "test.py", line 4, in <module>
    text_file.write(' and I\'m looking for more')
ValueError: I/O operation on closed file

因此,我们得出结论,我们无法读取或写入关闭的文件。

结论

本教程就是这样。 我们已经展示了Python通过我们演示的一些基本操作使其与文件一起使用的容易程度。

您通常使用Python对文件执行哪些其他操作?

翻译自: https://code.tutsplus.com/tutorials/file-handling-in-python--cms-25623

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值