Python文件操作

目录

一、打开文件

二、读取文件

1. 读取整个文件内容

2. 逐行读取文件内容

3. 读取多行内容

三、写入文件

1. 写入内容覆盖原有文件

2. 追加内容到文件末尾

四、关闭文件

五、文件指针操作

六、检查文件是否存在


在 Python 中,文件操作是一项基础且重要的功能,它主要包括打开、读写、关闭等操作。

一、打开文件

使用 open() 函数来打开文件,其基本语法如下:

 f = open(file_path, mode, encoding=None)
  • f:是 open 函数的文件对象,拥有属性和方法。

  • file_path:文件的路径,可以是相对路径或绝对路径。

  • mode:打开文件的模式,常见的模式有:

    • r:以只读模式打开文件,文件指针会放在文件的开头,这是默认模式。

    • w:以写入模式打开文件,如果文件已存在则会覆盖原有内容(原有内容会被删除),如果文件不存在则会创建新文件。

    • a:以追加模式打开文件,文件指针会放在文件末尾,新的内容会被写到已有内容之后,如果文件不存在则会创建新文件。

    • x:以独占创建模式打开文件,若文件已存在则会抛出 FileExistsError 异常。

    • b:以二进制模式打开文件。

    • t:以文本模式打开文件。

    • +:以读写模式打开文件。

  • encoding:指定文件的编码方式,常见的有 'utf-8''gbk' 等。注意:encoding 的顺序不是第三位,所以不能用位置参数,要使用关键字参数直接指定。

二、读取文件

1. 读取整个文件内容

read()方法: 文件对象.read(num) ,num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

 try:
     f = open(file_path, 'r', encoding='UTF-8')
     content = f.read()
     print(content)
 finally:
     f.close()

在上述代码中,try...finally 语句确保了文件在使用完后会被关闭。不过,更推荐使用 with 语句,它能自动处理文件的关闭操作。

 with open(file_path, 'r', encoding='UTF-8') as f:
     content = f.read()
     print(content)

2. 逐行读取文件内容

可以使用 readline() 方法逐行读取文件内容。

 with open(file_path, 'r', encoding='UTF-8') as f:
     line = f.readline()
     while line:
         print(line.strip())
         line = f.readline()

也可以使用 for 循环来逐行读取文件内容,这种方式更加简洁。

 with open(file_path, 'r', encoding='UTF-8') as f:
     for line in f:
         print(line.strip())

3. 读取多行内容

使用 readlines() 方法可以读取文件的所有行,并将其存储在一个列表中,其中每一行的数据为一个元素。

 with open(file_path, 'r', encoding='UTF-8') as f:
     lines = f.readlines()
     for line in lines:
         print(line.strip())

其中 strip() 是 Python 字符串对象的一个内置方法,用于移除字符串开头和结尾的指定字符(默认是空白字符)。这里的指定字符是换行符,用于清除每行结尾处的换行符,它不会修改原始字符串,而是返回一个新的字符串。

三、写入文件

1. 写入内容覆盖原有文件

若以 w 模式打开文件,会覆盖文件中的原有内容。

直接调用 write() 方法,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区,当调用 flush 的时候,内容才会真正写入文件。这样做是为了避免频繁的操作硬盘而导致效率下降。

 f = open(file_path, 'w', encoding='UTF-8')
 f.write('Hello, World!\n')
 f.flush()

2. 追加内容到文件末尾

若以 a 模式打开文件,会将内容追加到文件末尾。

close() 方法内置了 flush 的功能,如果未调用 flush ,使用 close() 方法也可以将内容写入文件。

 f = open(file_path, 'a', encoding='UTF-8')
 f.write('Hello, World!\n')
 f.close()

四、关闭文件

在完成文件操作后,需要关闭文件以释放系统资源。可以使用 close() 方法手动关闭文件,不过更推荐使用 with 语句,它会在代码块结束时自动关闭文件。

五、文件指针操作

可以使用 seek() 方法来移动文件指针的位置,其基本语法如下:

 f.seek(offset, whence)
  • offset:表示要移动的字节数。

  • whence:指定从哪个位置开始移动,有三个可选值:

    • 0:从文件开头开始移动,这是默认值。

    • 1:从当前位置开始移动。

    • 2:从文件末尾开始移动。

例如,将文件指针移动到文件开头:

 with open(file_path, 'r', encoding='UTF-8') as f:
     f.seek(0)  # 将文件指针移动到文件开头
     content = f.read()
     print(content)

六、检查文件是否存在

在进行文件操作之前,有时需要检查文件是否存在,可以使用 os.path.exists() 函数:

 import os
 ​
 if os.path.exists(file_path):
     with open(file_path, 'r', encoding='UTF-8') as f:
         content = f.read()
         print(content)
 else:
     print('文件不存在')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值