python读写文件操作的三大基本步骤

目录

基本步骤

常用函数

open()函数

close()函数

read()函数

readlines()函数

readline()函数

write()函数

writelines()函数

with语句

读写操作的应用:

拷贝文件

[with 语句的嵌套](#with 语句的嵌套)

逐行拷贝


基本步骤

  1. 打开文件:open(filepath, mode, encoding)

  2. 读写文件:read() / write()

  3. 关闭文件:close()

python读取文件操作实例

f = open('filename.txt', 'r', encoding='utf-8')

f.read()

f.close()

常用函数

open()函数

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

file是要打开的文件,mode='r'是打开文件的模式,encoding是编码格式

文件的打开模式有以下字符表示:

'r' open for reading (default)

'w' open for writing, truncating the file first

'x' create a new file and open it for writing

'a' open for writing, appending to the end of the file if it exists

'b' binary mode

't' text mode (default)

'+' open a disk file for updating (reading and writing)

打开模式还能连用:

The default mode is 'rt' (open for reading text). For binary random access, the mode 'w+b' opens and truncates the file to 0 bytes, while 'r+b' opens the file without truncation. The 'x' mode implies 'w' and raises an `FileExistsError` if the file already exists.

close()函数

close() method of _io.TextIOWrapper instance

Flush and close the IO object.

This method has no effect if the file is already closed

打开文件,必须有对应的关闭,否则该未关闭的文件不能被其它的应用操作。

read()函数

read(size=-1, /) method of _io.TextIOWrapper instance

Read at most size characters from stream.

Read from underlying buffer until we have size characters or we hit EOF.

If size is negative or omitted, read until EOF.

read()可选参数size可以用于读取"size"大小的数据,返回的是字符串或字节对象,若是size的值没有填写,或者是个负值,那么read()函数将读取文件的所有内容,这也是用python开发pc软件中"复制黏贴"的功能比较常用的函数。

readlines()函数

Help on built-in function readlines:

readlines(hint=-1, /) method of _io.TextIOWrapper instance

Return a list of lines from the stream.

hint can be specified to control the number of lines read: no more

lines will be read if the total size (in bytes/characters) of all

lines so far exceeds hint.

readlines()函数是将文件当中的所有行,一行一行地读取,并逐一写入一个列表list内,最终返回这个列表。

readline()函数

Help on built-in function readline:

readline(size=-1, /) method of _io.TextIOWrapper instance

Read until newline or EOF.

Return an empty string if EOF is hit immediately.

If size is specified, at most size characters will be read.

readline()函数就是读取一行数据,用法除了size参数之外,就跟read()差不多,也是open()打开文件,readline()读取数据,close()关闭文件

write()函数

write(text, /) method of _io.TextIOWrapper instance

Write string s to stream.

Return the number of characters written

(which is always equal to the length of the string).

writelines()函数

writelines(lines, /) method of _io.TextIOWrapper instance

Write a list of lines to stream.

Line separators are not added, so it is usual for each of the

lines provided to have a line separator at the end.

with语句

通过with语句,不管读取还是写入文件操作都不用写对应的close()函数,语句块结束系统会自动关闭文件。

python 复制代码
with open('filename.txt', 'r', encoding='urf-8') as f:
    f.read()

读写操作的应用:

拷贝文件

python 复制代码
# 打开源文件以读取内容  
with open('source.txt', 'r') as source_file:  
    source_content = source_file.read()  
  
# 打开目标文件以写入内容  
with open('destination.txt', 'w') as destination_file:  
    destination_file.write(source_content)

with 语句的嵌套

以上两个with语句块还能嵌套写在一起:

python 复制代码
# 打开源文件以读取内容,并同时打开目标文件以写入内容  
with open('source.txt', 'r') as source_file:  
    with open('destination.txt', 'w') as destination_file:  
        # 读取源文件的内容  
        source_content = source_file.read()  
        # 将读取的内容写入到目标文件中  
        destination_file.write(source_content)

可以写在同一行:

python 复制代码
# 打开源文件以读取内容,并同时打开目标文件以写入内容  
with open('source.txt', 'r') as source_file, open('destination.txt', 'w') as destination_file:  
    # 读取源文件的内容  
    source_content = source_file.read()  
    # 将读取的内容写入到目标文件中  
    destination_file.write(source_content)

逐行拷贝

如果源文件很大,使用read()方法一次性读取所有内容可能会消耗较多的内存。对于大文件,更推荐的做法是使用文件对象的迭代器逐行读取和写入,这样可以减少内存的使用。

python 复制代码
with open('source.txt', 'r') as source_file, open('destination.txt', 'w') as destination_file:  
    # 逐行读取源文件并写入目标文件  
    for line in source_file:  
        destination_file.write(line)

相关推荐
SilentSamsara4 分钟前
MLflow 实验追踪与模型注册:从实验到生产的可复现工作流
开发语言·人工智能·pytorch·python·青少年编程
曲幽5 分钟前
写爬虫时用了代理还被封?Python 代理的那些隐藏坑,我替你踩明白了
python·http·https·proxy·socks·requests·socks5·proxies
装不满的克莱因瓶5 分钟前
掌握多头自注意力机制(Multi-Head Self-Attention)——Transformer 强大表达能力的核心来源
人工智能·python·深度学习·数学·ai·transformer
dongf201910 分钟前
R语言朴素贝叶斯算法---iris数据集
开发语言·算法·数据分析·r语言
下班走回家12 分钟前
RAG 技术的进化:从朴素检索到 Agentic RAG
开发语言·人工智能·python
weixin_3077791313 分钟前
从“大海捞针”到“主动推理”:AI如何重塑云原生故障诊断的根因链
开发语言·人工智能·算法·自动化·原型模式
Johnstons13 分钟前
网页加载到一半卡住?视频看到关键处花屏?可能是丢包在作祟
开发语言·php·音视频·弱网测试·网络损伤
hoiii18715 分钟前
C# Txt/Excel/Access 导入导出工具
开发语言·c#·excel
代码中介商16 分钟前
C++ 智能指针完全指南(二):shared_ptr 深度详解
开发语言·c++
用什么都重名20 分钟前
Python文本匹配利器:FlashText与RapidFuzz深度对比
python·flash text·rapidfuzz