零基础小白python入门——深入Python中的文件操作

小甲鱼《零基础入门学习Python》学习笔记 根据老师的建议,现在将第二次复习小甲鱼的《零基础入门学习Python》而做的学习笔记,上传到网上,方便今后复习和保存,因为是手写的,所以做了扫描锐化处理,方便阅读。 ... 阅读详情

任何语言都离不开对文件的操作,那么Python语言是如何来操作和管理文件的。

编码方式

编码方式的历史大致为ASCII ->gb2312->unicode->utf-8,期间具体详细信息可以百度

来个编码解码的小例子先,记住中文可以进行GBK和utf-8编码,在GBk一个中文字符对应两个字节,在utf-8一个中文字符对应三个字节,中文不能进行ASCII编码。

>>> '阿喵'.encode('GBK')
b'\xc1\xf5\xc8\xf3\xc9\xad'
>>> '阿喵'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)
>>> '阿喵'.encode('ascii')
b'阿喵'
>>> "阿喵".encode('utf-8')
b'\xe5\x88\x98\xe6\xb6\xa6\xe6\xa3\xae'
>>> '阿喵'.encode('GBK').decode('GBK')
'阿喵'
>>> '阿喵'.encode('GBK').decode('utf-8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc1 in position 0: invalid start byte
复制代码

如果大家在学习中遇到困难,想找一个python学习交流环境,可以加入我们的python圈,裙号947618024,可领取python学习资料,会节约很多时间,减少很多遇到的难题。

如果编码解码格式不一致可能会出现乱码,encode表示编码,decode表示解码。

文件操作的API

下面是Python文件操作的具体的API。

方法 含义 open 打开 read 读取 write 写入 close 关闭 readline 单行读取 readlines 多行读取 seek 文件指针操作 tell 读取当前指针位置

打开文件

Python的open()函数打开一个文件时,有若干个参数可用。然而,最常用的参数只有前两个。

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

注意,第一个是强制性的,其余的是可选的。如果不添加mode参数,文件将在Python中以只读模式打开。

encoding:可以不写。不写参数,默认的编码本是操作系统默认的编码本。windows默认gbk,linux默认utf-8,mac默认utf-8。

f=open('test.txt',encoding='utf-8')   #打开文件
data=f.read()  #读取文件
print(data)
f.close() #关闭文件         
复制代码

mode

mode含义r文本模式,读取rb二进制模式,读取w文本模式,写入wb二进制模式,写入a文本模式,追加ab二进制模式,追加+可读可写

读取文件

代码中用到的文件文件操作的1.txt 文件内容如下:

关注编程阿喵
作者:阿喵
复制代码

readline(),使用该方法时,需要指定打开文件的模式为r或者r+;

readlines(),读取全部行.返回一个列表,列表中的每个元素是原文件的每一行。如果文件很大,占内存,容易崩盘。

# 打开文件进行读取
f = open("1.txt","r",encoding='utf-8')
# 根据大小读取文件内容
print('输出来自 read() 方法\n',f.read(2048))
# 关闭文件
f.close()
# 打开文件进行读写
f = open("1.txt","r+",encoding='utf-8')
# 读取第2个字和第2行行的文件内容
print('输出来自 readline() 方法\n',f.readline(2))
print('输出来自 readlines() 方法\n',f.readlines(2))
# 关闭文件
f.close()
# 打开文件进行读取和附加
f = open("1.txt","r",encoding='utf-8')
# 打开文件进行读取和附加
print('输出来自 readlines() 方法\n',f.readlines())
# 关闭文件
f.close()

# 输出如下
输出来自 read() 方法
 关注编程阿喵
作者:阿喵
输出来自 readline() 方法
 关注
输出来自 readlines() 方法
 ['编程阿喵\n']
输出来自 readlines() 方法
 ['关注编程阿喵\n', '作者:阿喵']

复制代码

写入文件

下面只介绍清除写 w和追加写 a

案例:将关注编程阿喵写入 test.txt 文件中

 

# mode=w 没有文件就创建,有就清除内容,小心使用
with open('test.txt', 'w', encoding='utf-8') as fb:
      fb.write('关注编程阿喵\n')  
复制代码

下面再将作者:编程阿喵写入test.txt 文件中

with open('test.txt', 'w', encoding='utf-8') as fb:
      fb.write('作者:阿喵\n')  
复制代码

运行后会发现 w模式会清除原文件内容,所以小心使用。只要使用了w,就要一次性写完。

追加写 a

案例:将静夜思这首诗追加到 test.txt 文件中

# mode=a 追加到文件的最后
with open('test.txt', 'a', encoding='utf-8') as fb:
      fb.write('关注编程阿喵\n')  
with open('test.txt', 'a'encoding='utf-8') as fb:
      fb.write('作者:阿喵\n')      
复制代码

指针操作

事物或资源都是以文件的形式存在,比如消息、共享内存、连接等,句柄可以理解为指向这些文件的指针。

句柄(handle)是一个来自编译原理的术语,指的是一个句子中最先被规约的部分,所以带有一个「句」字。

句柄的作用就是定位,两个APi还是tell和seek。

tell返回文件对象在文件中的当前位置,seek将文件对象移动到指定的位置,传入的参数是offset ,表示移动的偏移量。

下面通过示例对上述函数作进一步了解,如下所示:

with open('test.txt', 'rb+') as f:
    f.write(b'阿喵')
    # 文件对象位置
    print(f.tell())
    # 移动到文件的第四个字节
    f.seek(3)
    # 读取一个字节,文件对象向后移动一位
    print(f.read(1))
    print(f.tell())
    # whence 为可选参数,值为 0 表示从文件开头起算(默认值)、值为 1 表示使用当前文件位置、值为 2 表示使用文件末尾作为参考点
    # 移动到倒数第二个字节
    f.seek(-2, 2)
    print(f.tell())
    print(f.read(1))
    
#输出如下
6
b's'
4
50
b'\r' 
复制代码

上下文管理

我们会进行这样的操作:打开文件,读写,关闭文件。程序员经常会忘记关闭文件。上下文管理器可以在不需要文件的时候,自动关闭文件,使用with open即可。

# with context manager
with open("new.txt", "w") as f:
    print(f.closed)
    f.write("Hello World!")
print(f.closed)

#输出如下
False
True
复制代码

如何批量读取多个文件

下面,批量读取某文件夹下的txt文件

 

file_list = ['1.txt', '2.txt', '3.txt','4.txt']
for path in file_list:
    with open(path, encoding='utf-8') as f:
        for line in f:
            print(line)
复制代码

下面将批量读取文件夹下的txt文件的内容,合并内容到一个新文件5.txt中,具体实现的代码如下。

import os
#获取目标文件夹的路径
filedir = os.getcwd()+'\\'+'\\txt'
#获取当前文件夹中的文件名称列表
filenames = []
for i in os.listdir(filedir):
    if i.split(".")[-1] == 'txt':
        filenames.append(i)
#打开当前目录下的5.txt文件,如果没有则创建
f = open('5.txt','w')
#先遍历文件名
for filename in filenames:
    filepath = filedir+'\\'+filename
    #遍历单个文件,读取行数
    for line in open(filepath,encoding='utf-8'):
        f.writelines(line)
        f.write('\n')
#关闭文件
f.close()
复制代码

其实在Window中只需要cd 至目标文件夹,即你需要将所有想要合并的txt文件添加至目标文件夹中,执行如下DOS命令 type *.txt > C:\目标路径\合并后的文件名.txt

练习

题目:创建文件data.txt,文件共100000行,每行存放一个1~100之间的整数,题目来源:牛客

import random

f = open(‘data.txt’,‘w+’)
for i in range(100000):
  f.write(str(random.randint(1,100)) + ‘\n’)
  f.seek(0)
  print(f.read())
  f.close()
复制代码

题目:生成100个MAC地址并写入文件中,MAC地址前6位(16进制)为01-AF-3B,题目来源:牛客

import random
import string

def create_mac():
  MAC='01-AF-3B'
  hex_num =string.hexdigits #0123456789abcdefABCDEF
  for i in range(3):
    n = random.sample(hex_num,2)
    sn = '-' + ''.join(n).upper()
    MAC += sn
  return MAC

def main():
  with open('mac.txt','w') as f:
    for i in range(100):
      mac = create_mac()
      print(mac)
      f.write(mac+'\n')

main()
复制代码

 

最后多说一句,想学习Python可联系小编,这里有我自己整理的整套python学习资料和路线,想要这些资料的都可以进q裙947618024领取。

本文章素材来源于网络,如有侵权请联系删除。

〖Python零基础入门篇(52)〗- 文件操作的避坑指南 文件操作的避坑指南:文件编码问题与缺少关闭函数。 阅读详情

相关推荐

Python自动化神器:OP插件64位版从安装到实战(附雷电模拟器截图技巧)

本文详细介绍了Python自动化神器OP插件64位版的安装与实战应用,包括环境搭建、窗口控制、鼠标键盘模拟等核心功能。特别针对雷电模拟器提供了最小化截图技术和OCR识别优化方案,帮助开发者高效实现Windows自动化任务。

weixin_29094539的博客 336

三十二、深入Python中的文件操作

任何语言都离不开对文件的操作,那么Python语言是如何来操作和管理文件的。

微信号:RunsenLiu 1363

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7432

python打开文件_你还在为文件读写而烦恼?Python已经轻松帮你解决了(建议收藏)...

不管是Java还是Python,都有相关文件读写操作!很多小伙伴们都困扰于读写文件的各种模式(如阅读、写入、追加等),以及搞不清open、read、readline、readlines、write等方法的使用。小编写这篇文章就是要告诉伙伴们Python文件读写的方式!open函数如果你想用python读取文件(如txt、csv等),第一步要用open函数打开文件。open()是python的内置函...

weixin_39624716的博客 343

Camera AF和FF

Camera按对焦功能可以分为FF(Fixed Focus)和AF(Auto Focus),即固定对焦和自动对焦。固定对焦顾名思义就是焦距是固定的,而自动对焦可以通过移动镜头位置来改变焦距从而实现自动对焦。以前摄像的功能机大多是固定对焦,现在的手机都带有自动对焦功能。 FF模组包括镜头(Lens),传感器(Sensor),红外滤色器(IR Filter),电路板(PCB),镜头支撑(Lens Holder),连接器(Connector)。 Fig 1. FF Module AF模组包括FF模组,音圈马达(V

Coppa的博客 1万+

AutosarMCAL开发——基于EB CRC驱动

本文为博主个人理解总结记录,如有不正,欢迎指正。

qq_45583706的博客 1392

从零开始学习python编程-和尧名大叔一起从0开始学Python编程-循环

0基础自学编程是很痛苦的一件事情,所以我想把自己学习的这个过程记录下来,让想学编程的人少走弯路,大叔文化程度较低,可能会犯一些错误,欢迎大家督促我。今天,我们来学习一下程序里面的循环,循环是个什么意思呢?来认识一下百度百科的解释,循环是以环形、回路或轨道运行;沿曲折的路线运行;特指运行一周而回到原处,再转。或说反复地连续做某事。 ,那么在程序里面的循环就是反复的执行,在Python中一般就for和...

q6q6q的专栏 273

大语言模型原理与工程实践:行业大语言模型的评测:以金融行业大语言模型为例

大语言模型、金融行业、模型评测、自然语言处理、深度学习、Transformer、BERT、GPT 1. 背景介绍 近年来,大语言模型(Large Language Model,LLM)在自然语言处理(Natural Language Processing,NLP)领域取得了突破性的进

AI大模型应用之禅 139

c++文件读写

// 输入输出流1.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include<iomanip> #include<iostream> #include<fstream> using namespace std; //文本文件读写 void test1() { const char * path = "C:\...

庸人自扰 224

12、每日卫星任务规划问题的不同公式

本文探讨了卫星任务规划问题的多种数学公式表示方法,包括传统的整数线性规划(ILP)模型、改进的基于路径的公式、基于集合覆盖的公式以及动态规划公式。通过案例研究比较了不同公式的求解效率和适用场景,并提供了使用Python进行实际求解的操作步骤。最后讨论了进一步优化策略及未来研究方向,旨在为解决卫星任务规划问题提供全面的理论支持和实践指导。

assembly8low的博客 204

5G NR资源网格详解:RE、RB、符号、时隙与帧

本文以ETSI发布的3GPP TS 38.211 V18.3.0(Release 18)为协议基线,从二维资源网格出发,建立这些对象的严格关系;随后解释Numerology如何改变时间和频率粒度,并给出索引换算、带宽计算、内存布局和排障方法。

jifen0bianhuan的博客 182

C++获取终端命令行输入std::getline 和readline

c++获取终端命令行的输入字符串,常用方法有std::getline和linux库函数readline。cin和scanf也可以得到终端命令行的输入,但是其遇到空间就会结束,不是特别的好用。而std::getline和readline 不会忽略space、tab,遇到Enter才会结束,可适用大部分场景。 readline的使用需要注意以下几点: 需要先check下自己的linux系统是否安装了readline库,如果没有安装,ubuntu上执行sudo apt-get install libreadl

zgcjaxj的博客 9334

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷1:文末附答案)

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项复赛模拟卷1:文末附答案)

王老师青少年编程 1619

【零基础入门学习Python---Python中的文件操作教程】

【零基础入门学习Python---Python中的文件操作教程】本文深入探讨了Python中的文件操作,包括文件的打开和关闭、文件读取和写入、文件指针和文件操作方法、异常处理和文件操作的错误处理、使用上下文管理器等内容,并提供详细的案例代码。我们还介绍了pickle模块,它是Python的标准模块,用于实现序列化和反序列化Python对象。希望这篇文章对Python编程初学者有所帮助。

Coder_ljw的博客 481

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python write 写多行_零基础小白python入门——深入Python中的文件操作

任何语言都离不开对文件的操作,那么Python语言是如何来操作和管理文件的。编码方式编码方式的历史大致为ASCII ->gb2312->unicode->utf-8,期间具体详细信息可以百度来个编码解码的小例子先,记住中文可以进行GBK和utf-8编码,在GBk一个中文字符对应两个字节,在utf-8一个中文字符对应三个字节,中文不能进行ASCII编码。>>> '...

weixin_33270920的博客 757

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python中文件操作中有什么困难_零基础小白python入门——深入Python中的文件操作...

任何语言都离不开对文件的操作,那么Python语言是如何来操作和管理文件的。编码方式编码方式的历史大致为ASCII ->gb2312->unicode->utf-8,期间具体详细信息可以百度来个编码解码的小例子先,记住中文可以进行GBK和utf-8编码,在GBk一个中文字符对应两个字节,在utf-8一个中文字符对应三个字节,中文不能进行ASCII编码。>>> '...

weixin_39966644的博客 157

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python打开文件_零基础小白python入门——深入Python中的文件操作 - python阿喵

任何语言都离不开对文件的操作,那么Python语言是如何来操作和管理文件的。编码方式编码方式的历史大致为ASCII ->gb2312->unicode->utf-8,期间具体详细信息可以百度来个编码解码的小例子先,记住中文可以进行GBK和utf-8编码,在GBk一个中文字符对应两个字节,在utf-8一个中文字符对应三个字节,中文不能进行ASCII编码。​如果大家在学习中遇到困难,...

weixin_40009026的博客 375

Python零基础动画教程:7天高效入门与实战应用指南

Python作为一门简洁高效的编程语言,其核心原理在于通过解释器将代码转换为计算机可执行的指令。掌握Python不仅能理解编程逻辑,更能实现自动化处理、数据分析等实际价值。在众多学习路径中,动画教学通过可视化方式降低理解门槛,尤其适合零基础学习者快速建立编程思维。本文聚焦于一套结合动画教学的Python教程,通过拆解其从环境搭建、基础语法到实战项目的学习路径,验证其如何帮助初学者在短期内掌握核心概念,并应用于自动化办公、网页爬虫等具体场景,实现从理论到实践的跨越。

weixin_29214559的博客 298

【2024】Python入门,详细基础教程,零基础入门,详细图文

Python入门基础介绍

weixin_42399800的博客 17万+

Python入门:Python3 文件操作全面学习教程

Python入门:Python3 文件操作全面学习教程,本文详细介绍了 Python3 文件操作方法,涵盖open()函数的使用及文件对象常用方法,并附实战案例。open()函数需指定文件路径和模式,模式决定操作方式,如r只读、w写入(覆盖)、a追加等,带b为二进制模式。文件对象有close()、read()、write()等方法。案例包括文本读写、二进制文件操作、指针控制等,还提及关闭文件、编码设置、模式选择及异常处理等注意事项,助读者掌握文件操作技能。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 11万+

【2025】Python入门,详细基础教程,零基础入门,详细图文

Python入门基础介绍

Python管家 1万+

python零基础入门到精通,python零基础入门教程

大家好,小编为大家解答python零基础入门到精通的问题。很多人还不知道python零基础入门教程,现在让我们一起来看看吧!别问我怎么知道的,作为科班出身,我就是一个多星期就从零开始把 Python 基础语法学完了,两三个月就找到了 Python 后台开发的实习工作。其实就一句话:零基础学习 Python,视频为主,书籍为辅,多敲代码。这就叫“理论 + 实战”。下面我就说一下我自己的学习思路,尽量让大家少做选择,直接跟着学走就完事了!

high_colever的博客 1071

【Python零基础快速入门系列 | 14】深度学习如何保存训练好的模型,请看数据持久化之文件操作(1)

数据在计算机中有2种存储方式,一种是在内存中,一种是在硬盘中,内存存储运行过程中的数据,如果数据需要掉电或程序退出后仍然能够保存,那么就需要存储到文件中,进行持久化存储。

机器未来的博客 2245

【Python零基础到入门】Python专栏简介

本文章是【Python零基础到入门】专栏的一个简单介绍 目前网上的Python学习文章 和 视频 等资源有很多 本专栏的 目的 是针对之前只听说过Python但是没有经过系统学习的小伙伴 所以该系列的文章核心目的就是让我们能够快速学习Python的知识

努力前行,总会成为自己心中的那道光 6万+

python零基础入门书籍pdf,python3.6从入门到精通pdf

通过自学编程,感觉到基础知识很重要,越到后面越能发现这一点,光记住是不行的,还要灵活运用,要多调试代码,计算机就是一个不断练习,不断遇到问题,解决问题的工种,要根据实际的业务能想到对应的语法,实际项目和应用最重要。不足的地方在于有些例子陈旧了。《网络是怎样连接的》以探索之旅的形式,从在浏览器中输入网址开始,一路追踪了到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了实际的网络设备和软件是如何工作的。《网络是怎样连接的》,计算机网络图解趣味版,中文PDF,362页,带目录,文字可复制。

chatgpt001的博客 1071
上一篇: 如何用Python制作一副扑克牌?有趣的案例!
下一篇: 零基础学习python 你该怎么做
python阿喵
博客等级 码龄6年 169粉丝 127原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值