【Python】文件读写(一)

文件的读写操作是Python编程中常见的编程任务内容之一。本文将详细讲解文件的读写操作。

目录

一、读操作

1. 打开文件

2. 读取文件内容

2.1 读取整个文件

2.2 按行读取:只读取一行

2.3 按行读取:读取所有行

3. 关闭文件

4. 使用with语句

使用with关键字,打开和操作文件内容即可。

5. 注意事项

二、写操作

1. 打开文件

2. 写入文件

2.1 写入单行

2.2 写入多行

3. 关闭文件

4.  使用with语句

5. 注意事项:

三、文件读写的其它操作

1. 文件定位

2. 其它模式

四、完整的读写代码


一、读操作

1. 打开文件

在Python中,使用open()函数来打开文件。这个函数需要至少一个参数,即文件名(包括路径,如果文件不在当前工作目录下)。

file = open('filename.txt', 'r')

这里,'filename.txt'是你要打开的文件名,'r'表示以“只读”模式打开文件。'r'是默认的模式,可以不写,但是明确的写出来更清晰 。

第三个参数encoding,可以不写,默认的编码是操作系统默认的编码。windows默认gbk,linux默认utf-8,mac默认utf-8。若是出现乱码,可能就是编码的问题,可以加上encoding='utf-8'

2. 读取文件内容

2.1 读取整个文件

可以使用read()方法读取整个文件的内容。
 

content = file.read()

print(content)

read()`方法会返回文件中的所有内容,格式为字符串。如果文件非常大,这种方法可能会占用大量内存。

2.2 按行读取:只读取一行

line = file.readline()

print(line) 

使用readline()方法可以一次读取文件的一行内容。可以在一个循环中多次调用readline()来逐行读取文件。

2.3 按行读取:读取所有行

可以使用readlines()方法一次性读取文件的所有行,类型是一个列表,其中每个元素是文件的一行。
 

lines = file.readlines()

for line in lines:

print(line)

3. 关闭文件

 file.close()

完成文件操作后,需要使用close()方法关闭文件。这可以释放文件所占用的系统资源。

4. 使用with语句

为了更方便地管理文件资源,Python提供了with语句。使用with语句可以确保文件在使用完毕后被正确关闭,即使在读取文件时发生了异常。
 

with open('filename.txt', 'r') as file:

content = file.read()

print(content) # 这里不需要显式调用file.close(),因为with语句会在代码块执行完毕后自动关闭文件

使用with关键字,只需要打开和操作文件内容即可,无需再手动关闭文件。当然若是有特殊操作,也可以在加上手动关闭的操作。

5. 注意事项

  • 确保有足够的权限来读取文件。
  • 注意文件的存在性和路径是否正确。
  • 在读取大文件时,要考虑内存占用,尽量使用按行读取或其他分块读取的方式。
  • 在多线程或多进程环境中操作文件时,要注意文件锁和同步问题,以避免数据不一致或损坏。
  • 建议使用with语句来打开文件,以确保文件在使用完毕后被正确关闭。

二、写操作

在Python中,写文件的操作也是非常重要的。下面我将详细解释如何写文件,并提供一些注意事项,以分点表示和归纳的形式进行说明: 写文件的操作

1. 打开文件

 file = open('filename.txt', 'w')  # 直接写入
 file = open('filename.txt', 'a')  # 追加写入

使用open()函数,并指定文件名和模式。对于写文件,常用的模式有'w'(写入模式,会覆盖原有内容)和'a'(追加模式,在文件末尾添加内容)。

2. 写入文件

2.1 写入单行

file.write('Hello, World!\n')

使用write()方法可以向文件中写入指定内容。该方法接受一个字符串作为参数,并将该字符串写入文件。  

2.2 写入多行

lines = ['Line 1\n', 'Line 2\n', 'Line 3\n']

file.writelines(lines)

使用writelines()方法可以将多行内容写入文件。

3. 关闭文件

file.close()

写入完成后,使用close()方法关闭文件。可以确保文件被正确地关闭并释放系统资源。

4.  使用with语句

为了简化文件管理,Python提供了with语句。它可以确保文件在使用完毕后被正确关闭,即使发生异常。

with open('filename.txt', 'w') as file:
    file.write('Hello, World!')。

5. 注意事项:

  • 在写入文件之前,确保文件存在(对于'a'模式)或有权限创建新文件(对于'w'模式)。
  • 确保有权限来写入文件。否则,会引发PermissionError。
  • 默认情况下,Python使用缓冲区来写入文件。这意味着数据可能会先在内存中累积,然后再一次性写入磁盘。但如果你需要立即将数据写入磁盘,可以使用flush()方法或设置buffering=0来禁用缓冲功能。
  • 在写入文件时,确保指定了正确的编码(如'utf-8'),以避免编码问题。如果不指定编码,Python将使用系统默认编码。
  • 在写文件时,可能会遇到各种异常,如文件不存在、权限问题等。可以使用try-except语句来捕获并处理这些异常。
try: 
    with open('example.txt', 'r') as file: 
        content = file.read() 
        print(content) 
except FileNotFoundError: 
    print('文件不存在!') 
except PermissionError: 
    print('无权限访问文件!') 
except Exception as e: 
    print(f'发生未知错误:{e}')
  • 如果需要写入二进制数据(如图片、音频等),请使用'wb'或'ab'模式,并确保你的数据是字节串(bytes)类型。 
  • 使用with语句来简化文件管理,并确保文件在使用完毕后被正确关闭。 虽然使用with语句可以确保文件被正确关闭,但在某些情况下,可能需要手动关闭文件。

三、文件读写的其它操作

1. 文件定位

在文件读写中,seek(offset,whence)方法可以移动文件指针到指定的位置。

  • offset:表示偏移量。
  • whence:只能传入0、1、2中的一个数字。 0表示从文件头开始 1表示从当前位置开始 2 表示从文件的末尾开始。
with open('example.txt', 'r') as file: 
    content = file.read(10) # 读取前10个字符 
    print(content) 
    file.seek(0) # 移动文件指针到文件开头 
    content = file.read(5) # 再次读取前5个字符 
    print(content)

tell() 方法用来显示当前指针的位置。

with open('example.txt', 'r') as file: 
    content = file.read(10) # 读取前10个字符 
    print(content )  
    print(file.tell())    # tell()方法显示当前文件指针所在的位置

2. 其它模式

只读模式 ('r'):

  • 这是文件打开的默认模式。
  • 如果文件不存在,会引发一个I/O错误。
  • 可以使用read(), readline(), 和 readlines()等方法来读取文件内容。

写入模式 ('w'):

  • 如果文件存在,打开文件并从开头开始编辑,即原有内容会被删除。
  • 如果文件不存在,会创建一个新文件。
  • 可以使用write(), writelines()等方法来写入内容。
  • 注意:这个模式会覆盖文件的原始内容。

追加模式 ('a'):

  • 如果文件存在,文件指针会被放在文件的结尾。
  • 新的内容会被写入到已有内容之后。
  • 如果文件不存在,会创建一个新文件进行写入。
  • 注意:这个模式主要用于写入,而不是读取。

读写模式 ('r+'):

  • 允许你读取和写入文件。
  • 文件指针默认在文件的开头。
  • 如果文件不存在,会引发一个I/O错误。
  • 可以使用read(), readline(), readlines(), write(), writelines()等方法。

写入并读取模式 ('w+'):

  • 类似于'w'模式,但允许你读取文件。
  • 由于该模式会截断文件,所以读取操作可能会返回空的内容(取决于你何时调用读取方法)。

追加并读取模式 ('a+'):

  • 允许你读取文件并在文件末尾追加内容。
  • 如果文件不存在,会创建一个新文件。
  • 可以使用read(), readline(), readlines(), write(), writelines()等方法。

二进制模式 ('b'):

  • 这个模式用于处理二进制文件,如图片、音频等。
  • 可以与上述模式结合使用,如'rb'(二进制只读模式)、'wb'(二进制写入模式)等。

文本模式:

  • 没有指定'b'模式时,Python默认使用文本模式。 文本模式会处理文本文件中的换行符,确保跨平台的兼容性。 

敲黑板:

  1. 如果只是想读取文件,使用'r'模式;
  2. 如果只是想写入文件并覆盖原有内容,使用'w'模式;
  3. 如果只是想在文件末尾追加内容,使用'a'模式。
  4. 如果想同时读取和写入,可以选择'r+'、'w+'或'a+'模式。
  5. 如果只是想处理二进制文件时,一定要使用'b'模式。

四、完整的读写代码



#读取文件示例
# 打开文件,使用 'r' 模式表示读取模式  
with open('example.txt', 'r') as file:  
    # 读取文件内容  
    content = file.read()  
    # 输出文件内容  
    print(content)  

#写入文件示例
# 打开文件,使用 'w' 模式表示写入模式(如果文件已存在,内容会被覆盖)  
# 如果你想在文件末尾追加内容,可以使用 'a' 模式  
with open('example.txt', 'w') as file:  
    # 写入内容  
    file.write('Hello, World!')  
  

#读取和写入文件的组合示例
#这个示例先读取文件的内容,然后添加一些新的内容,并写回到文件中。
# 打开文件以读取内容  
with open('example.txt', 'r') as file:  
    content = file.read()  
  
# 在读取的内容后添加新的内容  
new_content = content + '\n' + 'This is new content.'  
  
# 打开文件以写入新的内容(注意:这会覆盖原始文件)  
with open('example.txt', 'w') as file:  
    file.write(new_content)


# 打开文件以追加内容  
with open('example.txt', 'a') as file:  
    file.write('\nThis is additional content appended to the end.')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值