说说在 Python 中,如何读取文件中的数据

版权声明:如果喜欢,就点个赞呗 O(∩_∩)O~ https://blog.csdn.net/deniro_li/article/details/89285229

1 一次性读取

我们想要读取《傲慢与偏见》txt 小说(为简化例子,我们的 txt 只包含一段文字):

file = 'novel.txt'
with open(file) as file_object:
    contents = file_object.read()
    print(contents)

运行结果:

It is a truth universally acknowledged, that a single man in possession
of a good fortune, must be in want of a wife.

要使用文件,就必须先打开它,所以这里使用了函数 open() 。该函数 open()
接受一个参数: 即要打开的文件路径。 如果只有文件名,那么 Python 会在当前执行文件的所在目录来查找指定的文件。

关键字 with 会在程序不再需要访问文件或出现异常的情况下,关闭文件 。 我们只管打开文件使用它即可,Python 是不是很贴心哦O(∩_∩)O~

2 文件路径

函数 open(),入参如果只有文件名,那么 Python 会在当前执行的 .py 文件的所在目录中,查找文件 。

也可以提供文件路径 , 让 Python 到指定的文件目录中去查找所需要的文件。

相对路径语法形如:

with open('xxx\novel.txt') as file_object:

一般来说,在 Windows 系统中, 在文件路径中使用反斜杠( \ ) ,Linux 与 OS 使用的是是斜杠( / ) 。实际测试,在 Windows 7+ 系统中,斜杠与反斜杠都支持。

当然,也可以使用绝对路径。注意: 如果使用的是绝对路径,那么在 Windows 7+ 系统中,文件路径必须使用反斜杠。形如:

with open('F:/python_projects/xxx/novel.txt') as file_object:

因为绝对路径一般较长, 所以一般将其存储在变量中,然后再传入 open() 函数。

3 逐行读取

可以对文件对象使用 for 循环,逐行读取文件内容。

with open(file) as file_object:
    for line_content in file_object:
        print(line_content.rstrip())

运行结果与之前的 “一次性读取” 示例结果相同。在 txt 文件中, 每行的末尾都存在一个看不见的换行符。消除为了去除这些多余的空白行,我们使用了 rstrip() 函数。rstrip() 函数会删除 string 字符串末尾的空格。

4 在 with 外访问

使用关键字 with 时, open() 函数所返回的文件对象,只能在 with 代码块中使用 。 如果需要在 with 代码块之外,访问文件的内容, 那么可以在 with 代码块之内,将文件中的各行内容存储在列表变量中,然后就可以在 with 代码块之外,通过该列表变量,来访问文件内容啦O(∩_∩)O~

with open(file) as file_object:
    contents = file_object.readlines()

content_str=''
for content in contents:
    content_str+=content
print('content_str='+content_str)
print('len='+str(len(content_str)))

运行结果:

content_str=It is a truth universally acknowledged, that a single man in possession
of a good fortune, must be in want of a wife.
len=117

注意: 读取文本文件时, Python 会将文件中的所有文本都解释为字符串 。 如果我们需要将其中的文本解释为数字,那么就必须使用函数 int() 或者 float(),将其转换为整数或者浮点数。

Python 对数据量没有大小限制, 只要我们的系统内存足够多O(∩_∩)O~

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/89285229