Python文件处理



Python文件处理

前言:open()方法会返回一个file对象,基本语法格式:

open(filename, mode)

  • filename:要访问的文件的路径,可以是绝对路径,也可以是相对路径
  • model:模式实参,决定了以什么样的模式打开文件,下面的2.1中会详细介绍

1. 读文件中的数据


1.1 直接读文件中的数据

with open("text.txt") as file_object:
   contents = file_object.read()
print(contents)

上面的代码中,open()方法接收一个参数,我们上面的代码中是一个相对路径,它会在当前的Python程序的根目录中寻找text.txt这个文件,并将其打开,返回一个表示文件的对象,我们在上面的代码中将这个对象赋给了file_object这个对象,方便我们接下来的处理。值得注意的是,open()方法也可以接收一个绝对路径,但无论接收的是相对路径还是绝对路径,如果不存在这个文件,会出错。得到一个表示这个文件的对象(file_object)后,使用read()方法将这个文件中的所有内容读取出来,并将其当做一个字符串赋值给contents,然后将这个字符串打印出来。

注意:如果在文件路径中直接使用反斜杆,将引发错误,因为反斜杠是转义符,例如:\t会被解读为制表符。所以要使用\\或/。


1.2 读取文件中的一行数据

readline()方法会从文件中读取单独的一行,如果readline()返回的是一个空字符串,说明已经读取到文件的最后一行。

filepath = 'text.txt'

with open(filepath, 'r') as file_object:
    print(file_object.readline())

上面的代码只会读取text.txt文件中的第一行。


1.3 逐行读取文件中的数据

filepath = "text.txt"

with open(filepath) as file_object:
    for line in file_object:
        print(line.rstrip())

注意:在文件中,每一行的末尾都有一个看不见的换行符,使用print()方法时也会将在末尾加上一个换行符,因此,每行的末尾都有两个换行符,要使用rstrip()方法去掉这些空白行。


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

要将文件中的各行内容存储在列表中,可以使用readlines()方法:

filepath = "text.txt"

with open(filepath) as file_object:
    lines = file_object.readlines()

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

注意:读取文本文件时,Python将其中的所有文本都认为是字符串,如果要将其当做数使用,要使用函数int()float()将其转化为整数或浮点数。


2. 写入文件


2.1 写入空文件

要将文本写入空文件,只需要在调用open()时给它提供另一个参数’w’:

filepath = 'text.txt'

with open(filepath, 'w') as file_object:
    file_object.write("I love python")

在上面的例子中,我们为open()提供了两个实参,第一个是要打开的文件的位置,第二个是’w’,'w’是指以写入模式打开文件。打开文件时,可以指定以下任意一种模式:

  • r : 读取模式: 文件已只读的方式打开

  • r+ : 读写模式:文件可读也可写

  • w: 写入模式:文件只能写,不能读,文件原有的内容将会被覆盖

  • w+: 文件能读能写,文件原有的内容会被覆盖

  • a : 附加模式:文件能写不能读,和’w’不同的是,以添加的方式写入文件,不会覆盖原有的内容

  • a+:文件能读能写,以添加的方式写入文件,不会覆盖原有的内容

    注意:

    1. 当文件不存在时,w, w+, a, a+ 都会创建文件
    2. 以r+ 模式打开文件时,指针指在文件的头部,类似于insert
    3. 以a或a+打开文件时,指针指在文件的末尾

    注意:如果没有模式实参,Python将以默认的只读模式打开文件。Python只能将字符串写入文件中,如果要将数值写入文件中,要用函数str()将数值转化为字符串,再将字符串写入文件。


2.2 写入一行文本后换行

write()方法不会在写入的文本末尾添加换行符,所以,以下代码执行之后:

filepath = 'text.txt'

with open(filepath, 'w') as file_object:
    file_object.write("I love python.")
    file_object.write("I love java.")
    

text.txt中的内容将是这样的:

I love python.I love java.

如果想要在写入一行后就换行,只需要在write()方法中在写入的内容的末尾加上换行符\n:

filepath = 'text.txt'

with open(filepath, 'w') as file_object:
    file_object.write("I love python.\n")
    file_object.write("I love java.\n")

结果就是你想要的啦:

I love python.
I love java.

2.3 在文件中添加信息

上面我们说过,‘w’(写入模式)会覆盖掉文件原有的信息,如果不想覆盖掉原有的信息,只是向文件中添加新的信息,可以使用附加模式(‘a’),代码也很简单,只需要将open()方法中的模式参数换为’a’:

filepath = 'text.txt'

with open(filepath, 'a') as file_object:
    file_object.write("I love python.\n")
    file_object.write("I love java.\n")

感谢你的阅读!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值