python note 08 文件操作

博客围绕Python展开,介绍了文件路径中绝对路径与相对路径的比较,还阐述了文件操作模式,如只读、写入、追加等,以及seek和tell函数对光标的操作。此外,提及了注册、登录功能和文件修改等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、相对路径与绝对路径比较

#绝对路径

f = open('d:\pzw.txt',mode='r',encoding='UTF-8')
content = f.read()
print(content)
f.close()

#相对路径

f = open('pzw',mode='r',encoding='utf-8')
content = f.read()
print(content)
f.close()

 

2、

#对于r就是只读

f = open('pzw',mode='rb',)
content = f.read()
print(content)
f.close()

#对于w没有文件会创建文件,有文件会将源文件的内容全部清除再写

f = open('log',mode='w',encoding='utf-8')
f.write('123456')
f.close()

 

f = open('log',mode='wb')
f.write('123456'.encode('utf-8'))
f.close()

 

f = open('log',mode='w+',encoding='utf-8')
f.write('aaa')
print(f.read())
f.close()
#不显示任何内容

 

#对于a为追加功能

f = open('log',mode='a',encoding='utf-8')
f.write('666')
f.close()

 

f = open('log',mode='ab')
f.write('666'.encode('utf-8'))
f.close()

 

f = open('log',mode='a+',encoding='utf-8')
f.write('666')
f.seek(0)
print(f.read())
f.close()

 

3、seek用来调整光标位置,utf-8编码中文占三个字节

f.seek(3)  # 是按照字节定光标的位置

4、tell用来告诉你光标的位置

f.tell() 告诉你光标的位置

5、其他

f.readable()  # 是否可读
line = f.readline()  # 一行一行的读
line = f.readlines()  # 每一行当成列表中的一个元素,添加到list中

6、注册,登录

username = input('请输入你要注册的用户名:')
password = input('请输入你要注册的密码:')
with open('list_of_info',mode='w',encoding='utf-8') as f:
    f.write('{}\n{}'.format(username,password))
print('恭喜您,注册成功')
lis = []
i = 0
while i < 3:
    usn = input('请输入你的用户名:')
    pwd = input('请输入你的密码:')
    with open('list_of_info',mode='r+',encoding='utf-8') as f1:
        for line in f1:
            lis.append(line)
    if usn == lis[0].strip() and pwd == lis[1].strip():
        print('登录成功')
        break
    else:print('账号和密码错误')
    i+=1

 7、修改文件

# 修改文件
with open('file',encoding='utf-8') as f,open('file.bak','w',encoding='utf-8') as f2:
    for line in f:
        if '张三' in line:  #班主任:张三
            line = line.replace('张三','李四')
        #写文件
        f2.write(line) 

import os
os.remove('file') #删除文件
os.rename('file.bak','file')  #重命名文件

 

转载于:https://www.cnblogs.com/P-Z-W/p/10546987.html

<think>首先,用户的问题是关于Python文件操作指南的。他们想了解如何在Python中进行文件操作,特别是文件读写操作。 我需要在回答中遵循系统级指令: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,例如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 用户提供了参考引用: - 引用[1]: 关于Python文件读写的基本介绍,包括I/O操作概述、实现原理、步骤等。 - 引用[2]: Python2的文件读写示例。 - 引用[3]: Python文件读写操作详解,包括使用with语句和核心方法。 这些引用是站内的,我需要自然地引用它们,但不是直接复制粘贴;而是要基于这些信息构建回答。 回答结构: 1. **引言**:简要介绍Python文件操作的重要性。 2. **核心概念**:解释文件操作的基本原理和步骤。 3. **详细步骤**:逐步说明如何打开、读写、关闭文件。 - 包括不同的模式(如读、写、追加)。 - 使用with语句进行资源管理。 4. **代码示例**:提供Python代码示例。 - 确保代码正确,基于引用。 5. **常见方法**:介绍读取操作的方法,如read(), readline(), readlines()。 6. **字符编码**:简要提及字符编码问题。 7. **结束部分**:总结并生成相关问题。 生成相关问题:在回答的最后,添加"§§相关问题§§"部分,列出3-5个相关问题。 引用标识:在回答中,当提到引用内容时,自然地添加[^1], [^2], [^3]。例如,如果基于引用[1]解释原理,就加[^1]。 使用中文:整个回答用中文。 确保LaTeX正确:用户提到了数学表达式,但文件操作可能不涉及数学。如果需要,比如提到文件大小或索引,可以用$...$,但尽量避免不必要的数学。如果必须,例如在解释文件位置时,可以用$offset$,但可能不需要。 现在,构建回答大纲: - **标题**:Python文件读写操作指南 - **内容**: - 1. 文件操作概述 - 解释什么是文件I/O操作。 - 引用[^1]:基于引用[1]的概述。 - 2. 文件读写实现原理 - 简要说明文件操作Python中的原理。 - 引用[^1]。 - 3. 文件读写操作步骤 - 步骤1: 打开文件 - 步骤2: 读写文件 - 步骤3: 关闭文件 - 提供代码示例。 - 引用[^2]和[^3]。 - 4. 文件打开模式 - 列出常见模式:'r', 'w', 'a', 'r+', 'b'等。 - 5. 使用with语句(最佳实践) - 解释为什么使用with。 - 代码示例。 - 引用[^3]。 - 6. 核心读写方法 - read(), readline(), readlines(), write()等。 - 示例代码。 - 引用[^3]。 - 7. 字符编码处理 - 在Python3中处理编码。 - 引用[^2]提到Python2的编码问题。 - 8. 总结 - **相关问题**:在最后添加相关问题。 代码示例: - 基于引用,提供简单示例。 - 使用Python3,因为引用[2]提到Python2,但用户可能用Python3。 - 示例:打开文件读取、写入、使用with。 相关问题: 1. 如何在Python中处理大文件的读写? 2. Python文件操作中常见的错误有哪些? 3. 如何实现文件的复制和移动? 4. Python文件读写与数据库操作的区别? 5. 如何优化文件读写性能? 确保回答真实可靠:基于标准Python文档和实践。</think>### Python文件读写操作指南 在Python中,文件读写是常见的I/O操作,用于处理文本或二进制文件。Python提供了内置的`open()`函数和相关方法,使文件操作变得简单高效。本指南将逐步介绍文件操作的核心概念、实现步骤、最佳实践和常见方法,帮助您快速上手。所有内容基于Python标准库(Python 3.x),并参考了相关权威资料。以下是结构化讲解: #### 1. **文件操作概述** 文件I/O(Input/Output)操作涉及文件的打开、读取、写入和关闭。在Python中,文件被视为一个流(stream),数据通过缓冲区进行传输。I/O操作的核心目标是高效管理文件资源,避免内存泄漏或数据损坏[^1]。Python文件操作基于操作系统接口,确保跨平台兼容性。 #### 2. **文件读写实现原理** 文件读写依赖于Python的`io`模块。当您打开文件时,Python会创建一个文件对象,该对象包含一个文件描述符(file descriptor),指向操作系统中的文件句柄。读写操作通过缓冲区进行: - **读取**:数据从磁盘加载到内存缓冲区。 - **写入**:数据从内存缓冲区刷新到磁盘。 这种方法减少了磁盘I/O次数,提高效率。如果未正确关闭文件,可能导致资源泄漏或数据丢失[^1]。 #### 3. **文件读写操作步骤** 文件操作遵循三个基本步骤:打开文件、读写内容、关闭文件。以下是详细说明和代码示例。 ##### **步骤1: 打开文件** 使用`open()`函数打开文件,指定文件路径和模式。常见模式包括: - `'r'`:只读(默认)。 - `'w'`:写入(覆盖现有文件)。 - `'a'`:追加(在文件末尾添加)。 - `'r+'`:读写(文件必须存在)。 - `'b'`:二进制模式(用于非文本文件)。 示例:打开一个文本文件。 ```python # 打开文件(以只读模式) file = open('example.txt', 'r', encoding='utf-8') # 指定编码避免乱码 ``` 在Python 2中,需要手动处理编码(如`.decode('utf-8')`),但Python 3默认使用UTF-8,简化了操作[^2]。 ##### **步骤2: 读写文件** 使用文件对象的方法进行读写: - **读取方法**: - `read(size)`:读取指定字节数(如`read(100)`读取100字节)。 - `readline()`:读取一行。 - `readlines()`:读取所有行到列表。 - **写入方法**: - `write(string)`:写入字符串。 - `writelines(list)`:写入字符串列表。 示例:读取并写入文件。 ```python # 读取文件内容 content = file.read() # 读取整个文件 print(content) # 写入文件(以写入模式打开) with open('output.txt', 'w', encoding='utf-8') as f: f.write('Hello, Python!') # 写入字符串 ``` ##### **步骤3: 关闭文件** 使用`close()`方法释放资源。如果不关闭,文件句柄可能被占用,导致其他程序无法访问。 ```python file.close() # 手动关闭 ``` 但更推荐使用`with`语句自动管理资源(见最佳实践部分)[^3]。 #### 4. **文件打开模式详解** | 模式 | 描述 | 示例 | |------|------|------| | `'r'` | 只读 | `open('file.txt', 'r')` | | `'w'` | 写入(覆盖) | `open('file.txt', 'w')` | | `'a'` | 追加 | `open('file.txt', 'a')` | | `'r+'` | 读写 | `open('file.txt', 'r+')` | | `'b'` | 二进制 | `open('image.png', 'rb')` | | `'x'` | 独占创建(文件不存在时创建) | `open('new.txt', 'x')` | 在读写大文件时,结合缓冲参数(如`buffering=1024`)可优化性能。 #### 5. **最佳实践:使用`with`语句** 为避免忘记关闭文件,推荐使用`with`语句(上下文管理器)。它确保文件在代码块结束后自动关闭,即使发生异常。 ```python with open('demo.txt', 'r', encoding='utf-8') as f: lines = f.readlines() # 读取所有行 for line in lines: print(line.strip()) # 打印每行(去除换行符) # 文件自动关闭 ``` 这种方法简洁安全,是Python文件操作的黄金标准[^3]。 #### 6. **核心读写方法示例** Python提供了多种方法适应不同场景: - **读取指定长度**:适合大文件,避免内存溢出。 ```python with open('large_file.txt', 'r') as f: chunk = f.read(1024) # 每次读取1024字节 while chunk: print(chunk) chunk = f.read(1024) ``` - **读取一行**:逐行处理日志文件。 ```python with open('log.txt', 'r') as f: line = f.readline() while line: print(line.strip()) line = f.readline() ``` - **遍历所有行**:更高效的逐行读取。 ```python with open('data.csv', 'r') as f: for line in f: # 直接迭代文件对象 print(line.split(',')) # 分割CSV数据 ``` - **写入操作**: ```python with open('notes.txt', 'a') as f: # 追加模式 f.write('New note added.\n') # 写入一行 ``` 这些方法基于文件对象的缓冲区机制,确保高效I/O[^3]。 #### 7. **字符编码处理** 在Python 3中,文件操作默认使用UTF-8编码。但处理不同编码的文件时,需显式指定`encoding`参数: ```python # 读取GBK编码文件 with open('file_gbk.txt', 'r', encoding='gbk') as f: content = f.read() ``` 在Python 2中,需手动解码(如`.decode('utf-8')`),但Python 3简化了此过程[^2]。如果编码错误,会抛出`UnicodeDecodeError`,可使用`errors='ignore'`参数忽略无效字符。 #### 8. **总结** Python文件读写操作简单高效,核心是`open()`函数和读写方法。关键要点: - 始终使用`with`语句自动管理资源。 - 根据需求选择文件模式(如读、写、追加)。 - 处理大文件时,分块读取(`read(size)`)避免内存不足。 - 注意字符编码,尤其在跨平台场景。 通过本指南,您可安全地实现文件I/O操作。实践中,结合异常处理(如`try-except`)可增强健壮性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值