Python入门 — 文件

一、读取文件

       当需要分析或修改存储在文件中的信息时,读取文件就很方便,对数据分析应用程序来说尤其如此。比如,可以编写一个程序来读取文本文件的内容,并且以新的格式重写该文件。

       要使用文本文件中的信息,首先需要将信息读取到内存中。既可以一次性读取文件的全部内容,也可以逐行读取。

1、读取文件全部内容

首先,创建一个文件,lin.txt,内容为:

xiexiaguanyunideyiqie
ruguoniyekeyi
danshiwobuhuixuanze
zuimeibuguoshirenjiandesiyuedetian

程序打开并读取这个文件,再将其内容显示到屏幕上

from pathlib import Path
path = Path('lin.txt')
contents = path.read_text()
print(contents)

       首先需要清楚,要使用文件的内容,需要将其路径告知 Python。路径(path)指的是文件或文件夹在系统中的位置。Python 提供了 pathlib 模块,能够更轻松地在各种操作系统中处理文件和目录。这里即,pathlib 库。

        首先从 pathlib 模块导入 Path 类。Path 对象指向一个文件(lin.txt)。这里创建了一个表示文件 lin.txt 的 Path 对象,并将其赋给了变量 path。由于这个文件与当前编写的 .py 文件位于同一个目录中,因此 Path 只需要知道其文件名就能访问它。

        创建表示文件 lin.txt 的 Path 对象后,使用 read_text() 方法来读取这个文件的全部内容,read_text() 将该文件的全部内容作为一个字符串返回。

        但是,这个输出会在末尾多了一个空行。因为 read_text() 在到达文件末尾时会返回一个空字符串,而这个空字符串会被显示为一个空行。要删除这个多出来的空行,可对字符串变量 contents 调用 rstrip()。方法 rstrip() 能删除字符串末尾的空白

from pathlib import Path
path = Path('lin.txt')
contents = path.read_text()
contents = contents.rstrip()
print(contents)

注意:如果要读取的文件和程序文件不在同一个目录的话,那么值传递文件名这种方式是不行的,因为程序找不到要读取的文件。要让 Python 打开不与程序文件位于同一个目录中的文件,需要提供正确的路径。主要有两种方式:相对文件路径和绝对文件路径。

举个例子

        程序文件存储在了文件夹 python_work 中,并且在文件夹 python_work 中创建了一个名为 text_files 的文件夹,用于存储程序文件要操作的文本文件。

        那么相对路径的写法为:

path = Path('text_files/filename.txt')

       如果 text_files 并不在文件夹 python_work 中,那么上述的写法是不行的。因为 Python 只在文件夹 python_work 中查找该位置。现在我们需要使用绝对文件路径。使用绝对路径,可读取系统中任何地方的文件,因为它准确的告知了程序文件在电脑上的存储位置。

path = Path('/home/usr/data_files/text_files/filename.txt')

注意:在显示文件路径时,Windows 系统使用反斜杠(\)而不是斜杠(/)。但是在代码中应该始终使用斜杠

2、按行读取文件

        使用 splitlines() 方法将冗长的字符串转换为一系列行,再使用 for 循环以每次一行的方式读取文件中的各行。

from pathlib import Path
path = Path('lin.txt')
contents = path.read_text()
lines = contents.splitlines()
for line in lines:
    print(line)

接下来,我们把读取的每行文本拼接起来:

from pathlib import Path
path = Path('lin.txt')
contents = path.read_text()
lines = contents.splitlines()
str_line = ''

for line in lines:
    str_line += line

print(str_line)
print(len(str_line))

结果输出:

xiexiaguanyunideyiqieruguoniyekeyidanshiwobuhuixuanzezuimeibuguoshirenjiandesiyuedetian
87

注意:在读取文本文件时,Python 将其中的所有文本都解释为字符串。如果读取的是数,并且要将其作为数值使用,就必须使用 int() 函数将其转换为整数,或者使用 float() 函数将其转换为浮点数。

二、写入文件

        将输出写入文件,即便关闭包含程序输出的终端窗口,这些数据依然存在:可以方便与他人共享数据文件,也可以在后续有需要时编写程序将这些输出读取到内存中并进行处理。

1、写入一行

确定一个文件的路径后,就可使用 write_text() 将数据写入该文件。

from pathlib import Path
path = Path('hh.txt')
path.write_text("我最讨厌编程啦")

# 这里hh.txt文件与程序文件在同一个目录下

注意:Python 只能将字符串写入文本文件。如果要将数值数据存储到文本文件中,必须先使用函数 str() 将其转换为字符串格式。

2、写入多行

        write_text() 方法的工作任务,首先,如果 path 变量对应的路径指向的文件不存在,就创建它。其次,将字符串写入文件后,它会确保文件得以妥善地关闭。

from pathlib import Path
contents = "shi ma\n"
contents += "bu xue bian cheng la\n"
contents += "wo zai ye bu yao xue biancheng la\n"
path = Path('hhh.txt')
path.write_text(contents)

注意:  write_text() 方法,如果指定的文件已存在, write_text() 将删除其内容,并将指定的内容写入其中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值