Python 第七章 文件读写

7. 文件读写

7.1 从文件中读取数据

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

    1、读取整个文件

    读取整个文件可使用 read() 方法,关键字 with 在不再需要访问文件后将其关闭,函数 open() 用来打开文件,它接受一个参数:要打开文件的名称。
    我们也可以调用 open() 函数和 close() 函数来打开和关闭文件;但这样做,如果程序存在bug,导致 close() 语句未执行,文件将不会关闭;with open() 则可以让 python 自动选择合适的时候关闭文件。

file_name = r'filer_w\pi_digits.txt'
with open(file_name) as file_object:
    contents = file_object.read()
    print(contents)

输出:

3.1415926535
  8979323846
  2643383279

进程已结束,退出代码 0

    2、文件路径

    open() 函数中需要传入文件名,文件名通常被存储在一个变量中,如上述的 file_name 中存储着 pi_digits.txt 的文件路径,而文件路径有两种,相对文件路径和绝对文件路径。

  • 相对文件路径:指相对于当前运行程序所在目录而言的路径,一般与当前程序在同一级别目录,或者级别低于当前程序。
  • 绝对文件路径:值文件在计算机中的准确位置,一般不与运行程序在同一目录。

    在 Windows 系统中,文件目录中使用反斜杠( \ )而不是斜杠(/)。另外,由于反斜杠在 python 中被视为转义标记,为确保万无一失,应以原始字符串的方式指定路径,即在开头的单引号前加上 r

    3、逐行读取

    读取整个文件可使用 read() 方法,关键字 with 在不再需要访问文件后将其关闭,函数 open() 用来打开文件,它接受一个参数:要打开文件的名称。

    读取文件时,常常需要检查其中的每一行,可能需要在文件中查找特定信息,或以某种方式修改文件中的文本,要以每次一行的方式检查文件,对此可使用 for 循环。

file_name = r'filer_w\pi_digits.txt'
with open(file_name) as file_object:
    for line in file_object:
        print(line)

输出:

3.1415926535

  8979323846

  2643383279

进程已结束,退出代码 0

    可以看见输出中出现空白行,这是因为文件中的每行末尾都有一个看不见的换行符,而 print 语句也会加上一个换行符,因此每行末尾都有两个换行符:李哥来自文件,另一个来自 print 语句。要删除空白行可在输出中使用 rstrip() 。

file_name = r'filer_w\pi_digits.txt'
with open(file_name) as file_object:
    for line in file_object:
        print(line.rstrip())

输出:

3.1415926535
  8979323846
  2643383279

进程已结束,退出代码 0

    4、创建一个包含文件各行内容的列表

    使用关键字 with 时,open() 返回的文件对象只在代码块内部可用。如果想在 with 代码块外访问文件内容,可在 with 代码块内将文件的各行存储在一个列表中,并在 with 代码块外使用该列表:你可以立即处理文件的各个部分,也可以推迟到程序后面再处理。

file_name = r'filer_w\pi_digits.txt'
with open(file_name) as file_object:
    lines = file_object.readlines()

for line in lines:
    print(line.rstrip())

输出:

3.1415926535
  8979323846
  2643383279

进程已结束,退出代码 0

7.2 写入文件

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

    1、写入空文件

    要将文本写入文件,在调用 open() 时需要提供一个实参,告诉 python 你要写入打开的文件。

filename = r'filer_w\programming.txt'
with open(filename, 'w') as file_object:
    file_object.write('I love programming.')

    上述示例中,调用 open() 时提供了两个实参,第一个实参是要打开文件所在路径,第二个实参 ‘w’ 是要告诉 python 现在以写入模式打开这个文件,当然第二个实参可以有一下几种类型:

  • ‘r’ 读取模式:如果省略了模式参数,python 也将以默认的只读模式打开文件。
  • ‘w’ 写入模式:该模式下如果指定文件已存在,python 将在返回文件对象前清空该文件,即写入的内容将覆盖掉原有内容。如果要写入的文件不存在,函数 open() 将自动创建它,并且该模式下输出内容为空。
  • ‘a’ 附加模式:适用于要给文件添加内容,而不是覆盖原有内容,并且每次写入的内容都将添加到文件末尾,如果指定文件不存在,python 将创建一个空文件。
  • ‘r+’ 写入文件模式:该模式下可同时对文件进行读取和写入操作。

    2、写入多行

    函数 write() 不会在你写入的文本末尾添加换行符,因此如果你要写入多行则需要自己加入换行符。

filename = r'filer_w\programming.txt'
with open(filename, 'w') as file_object:
    file_object.write('I love programming.\n')
    file_object.write('I love creating new games.\n')

programming.txt 中写入的内容:

I love programming.
I love creating new games.

    3、附加到文件

    使用附加模式 ‘a’ 来给文件添加内容,而不是覆盖原有内容。

filename = r'filer_w\programming.txt'
with open(filename, 'a') as file_object:
    file_object.write('I also love finding meaning in large dataset.\n')
    file_object.write('I love creating apps that can run in a browser.\n')

programming.txt 中写入的内容:

I love programming.
I love creating new games.
I also love finding meaning in large dataset.
I love creating apps that can run in a browser.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值