Python 极简核心:文件

Nano Code: 250行 Python 代码实现的极简 Claude Code 为了让 AI 具备操作文件系统和执行命令的能力,我们定义了readwriteeditglobgrepbash这六个基础工具。AI 模型(如 Claude 3.5 Sonnet / Opus)通过识别这些工具的定义,来决定何时以及如何调用它们。 阅读详情

有几条逻辑先写在前面:

  • 必须首先使用open函数,打开文件之后才有后续的write和read操作
  • 需要在open函数中就定义好文件的使用用途(设置open函数的参数),比如读、写、还是读写、还是追加等等
  • 指针的位置直接影响目标内容

本文章,主要从基本的打开、写、读和文件操作两个大的方向来进行小结。

1. 文件打开、写入、读取的简要概述

open函数

open()函数是Python内置的函数,用来创建一个file对象,记住:有了file对象,相关的方法才可以调用它进行读写。
其基本用法为:fileObject = open(xx, x)
这里,xx代表要打开的文件,x指的是参数。
(以下都省略了打开的文件)

open(, r):只读,不创建
open(, r+):读 + 写,不创建
open(, w):只写
open(, w+):写 + 读
open(, a):追加方式写(不覆盖)
open(, a+):追加方式写 (不覆盖)+ 读
即,加号'+'代表额外方式

附:open(, rb):只读,以二进制格式打开(非人工书写数据,如图片等)
在这里插入图片描述
注:

  • w+与r+区别
    r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建

write函数

write() 方法用于向文件中写入指定字符串,用法:fileObject.write(str)

read函数

fileObject.read():text ——> one whole str
fileObject.readline():one line ——> one str
fileObject.readlines():all line ——> one list with all lines

指针与seek函数

指针会随你的读写操作而向后移动

  • open文件之后,指针就在文件内容的起始位置
  • write函数之后,指针就在写入的内容之后
  • read函数之后,指针在读取的内容之后,
    例如使用read(),则指针会从起始位置移动,直到文件的末尾

所以,如果发现获取的并非自己想取的内容,很可能就是因为指针的位置不对。
这种情况,就应该使用 seek() 来指定指针的位置。

注:seek(0) 指向开头

2. 简单例子

这里的例子详细的介绍了 write、read、readline和readlines的用法。

open函数的w模式和w+模式

  • 首次写入
# 首次写入
with open('write_files.txt', 'w') as f1:
    f1.write('1 2 3\n4 5 6') # 只要没有退出文件,就可以连续写入
    f1.write('7 8 9')

with open('write_files_w+.txt', 'w+') as f2:
    f2.write('a b c\nd e f')  # 只要没有退出文件,就可以连续写入
    f2.write('g h i')

结果:
(文件中写入的内容)
在这里插入图片描述

  • 再次写入
# 再次写入
with open('write_files.txt', 'w') as f1:
    f1.write('w模式,重新写入...')  # 再次写入会完全清空之前的文件

    # w模式下使用read函数会导致报错(io.UnsupportedOperation: not readable),因为 w 模式不可 读取
    #lines = f1.read()
    #print(lines)

with open('write_files_w+.txt', 'w+') as f2:
    f2.write('w+模式,重新写入...')   # 再次写入会完全清空之前的文件
    f2.seek(0) # 将经过write之后的指针移到文件开头
    red = f2.read()
    f2.seek(0)  # 将经过read之后的指针移到文件开头
    readline = f2.readline()
    f2.seek(0) # 将readline()之后的指针移动到文件开头
    readlines = f2.readlines()
    print(f'read: {red}') # read()读取所有的内容,并且将其作为一个完整的字符串
    print(f'readline: {readline}')  # readline()只读取一行内容,且是字符串格式
    print(f'readlines: {readlines}') # readlines()读取所有行,并将内容放在一个list里(注:由于这里总共只有一行,所以没有用到 for in 来遍历这个列表)

控制台打印结果:

read: w+模式,重新写入...
readline: w+模式,重新写入...
readlines: ['w+模式,重新写入...']

文件中写入的内容:
在这里插入图片描述

open函数的a模式和a+模式

在这里插入代码片
  • a 模式
# 1. a 模式
with open('write_file_a.txt', 'a') as f1:
    f1.write('x y z\n1 2 3')
    # w模式下使用read函数会导致报错(io.UnsupportedOperation: not readable),因为 w 模式不可 读取
    # lines = f1.read()
    # print(lines)

结果:
在这里插入图片描述

  • a+模式
# 2. a+模式
# 首次
with open('write_file_a+.txt', 'a+') as f2:
    f2.write('A B C')
    lines = f2.read()  # 这里是没有东西打印出来的,因为指针现在在最后面
    print(lines)
# 再次
with open('write_file_a+.txt', 'a+') as f2:
    f2.write('1 2 3')
    f2.seek(0) # 将指针移到头部
    lines = f2.read()  
    print(lines)

打印结果:

A B C1 2 3

3. json模块

写入

import json

data_dic = {'name':'robin', 'age':18, 'city':"Shanghai"}

# text = json.dumps(data_dic) # json.dumps:字典 -> 文件字符串
# print(text)
f = open('demo.json', 'w')  # 新建 json 文件
json.dump(data_dic, f)      # json.dump :字典 -> JSON 文件

在这里插入图片描述

读取

  • json.load:将已编码的json文件解码为python对象
f = open('demo.json', 'r', encoding='utf-8')
f_dic = json.load(f)
print(f_dic)

返回:{'name': 'robin', 'age': 18, 'city': 'Shanghai'}

4. 文件操作

4.1 返回文件和文件夹的名称:os.listdir()

具体来说,是返回目标路径下所有类型格式的文件和文件夹的名称(不是完整路径)的一个list类型。

例子:

import os, glob

cwd = os.getcwd()
print(f"cwd:{cwd}")

lstdir = os.listdir(cwd)
print(f"lstdir:\n{lstdir}")

结果:

lstdir:
['Alan.png', 'json_demo.py', '.DS_Store', 'demo.json', 'example.log', 'test.py', 'image_to_json.py', 'restful.py', 'data', 'alan.json', '.idea']

可以看出来,结果不仅有各种文件,还有文件夹,但都是名称而不是完整地址。

一定要要注意,Mac 中存在隐藏文件'.DS_Store',因此使用os.listdir()要注意对结果进行一个过滤!

4.2 返回路径下的搜索结果:glob.glob()

具体来说,是输入指定匹配规则(Unix 终端所用规则)的搜索路径,返回目标结果的list类型(类似于Windows下的文件搜索)

例子:

import os, glob

cwd = os.getcwd()
print(f"cwd:{cwd}")

globdir = glob.glob(os.path.join(cwd, "*.py"))  # 获取指定后缀文件的完整地址
print(f"globdir:\n{globdir}")
print()
for i in globdir :
    file_name = os.path.split(i)[1]  # 获取地址字符串最后面的文件名
    print(f"file_name:{file_name}")

结果:

globdir:
['/Users/robin/MLcode/Pycharm_Project/tensorflow/0708_PythonRESTful/json_demo.py', '/Users/robin/MLcode/Pycharm_Project/tensorflow/0708_PythonRESTful/test.py', '/Users/robin/MLcode/Pycharm_Project/tensorflow/0708_PythonRESTful/image_to_json.py',    ]

file_name:json_demo.py
file_name:test.py
file_name:image_to_json.py

小结:

  • 使用os.path.join()合并路径和文件名为一个完整路径
  • 使用os.path.split() 从完整路径中分割出文件名
  • os.path.splitext():去除文件后缀

4.3 os.walk()

可以看Python 文件之 os.walk()

参考:

  1. open函数的一些注意点及r,r+,w,w+,a,a+的区别
  2. Python 文件I/O
  3. python文件打开方式详解——a、a+、r+、w+区别
  4. Python:获取地址字符串中的最后的文件/文件夹名(字符串)
USearch:极简高性能向量搜索引擎,从入门到生产部署全解析 向量搜索与相似性匹配是处理高维数据、实现智能推荐和语义检索的核心技术。其原理通常基于近似最近邻(ANN)算法,如HNSW,通过构建高维空间的导航图来快速定位相似向量,从而在海量数据中实现毫秒级检索。这项技术的价值在于,它能够将复杂的非结构化数据(如图片、文本)转化为可计算的向量表示,并高效地找到相似项,是构建现代AI应用(如搜索引擎、推荐系统、异常检测)的基础设施。在实际应用中,开发者常面临性能、内存和部署复杂度等工程挑战。USearch作为一个单文件、跨语言、高性能的相似性搜索与聚类引擎,针对这些痛点提供 阅读详情

相关推荐

MLFlow极简实现:20分钟跑通本地模型生命周期管理

模型生命周期管理是MLOps的核心基础,其本质在于保障实验可复现、结果可追溯、模型可加载。MLFlow作为主流开源工具,通过统一的Tracking协议将代码、参数、指标与模型资产关联,显著提升算法工程化效率。本文聚焦轻量级落地路径,摒弃复杂部署依赖,基于file://后端与mlflow run命令构建单机可验证闭环,天然支持参数化训练、环境隔离与文件系统级可审计性。特别适用于中小团队快速建立模型追踪规范、数据科学家验证迭代效果,以及CI/CD中轻量指标采集等典型场景,让模型价值从训练完成那一刻即开始沉淀。

weixin_28721917的博客 271

内置 open 函数中模式 a、a+、w、w+ 和 r+ 的区别?

这个示例中,我们首先以只读模式打开并读取一个文件,然后以写模式写入内容,接着在文件的末尾追加写入内容。然后我们再次以读写模式打开并读取文件,然后在文件的末尾追加读写内容。如果文件存在,内容会在文件的末尾追加。如果文件不存在,创建一个新的文件。如果文件存在,内容会在文件的末尾追加。如果文件不存在,创建一个新的文件。如果文件不存在,创建一个新的文件。如果文件不存在,创建一个新的文件。f.seek(0, 2) # 将文件指针移动到文件的末尾。f.seek(0, 2) # 将文件指针移动到文件的末尾。

2657

微信小程序反编译实战:用wxappUnpacker获取他人源码的完整流程(附常见报错解决方案)

本文详细解析了微信小程序反编译的完整流程,从缓存提取到源码重构,使用wxappUnpacker工具链实现逆向工程。涵盖环境配置、解密反编译、项目调试等关键步骤,并提供了常见报错解决方案,帮助开发者学习优秀实现方案或进行安全审计。

weixin_42706667的博客 469

a+ open python_python编程之文件操作

文件的读写在任何一门编程语言中,是非常重要的知识点。而python中,它对文件的操作非常简单,只需要使用open()函数来打开一个文件,获取到文件句柄,然后通过文件句柄就可以进行各种各样的操作了,但是根据打开模式的不同,能够执行的操作也会大有不同。通过open()函数打开文件操作完成后,要通过close()函数进行文件的关闭。open()函数打开文件的常用格式如下,f为文件句柄:f = ...

weixin_39736934的博客 660

ARM和FPGA之间的通信(硬件原理图篇)

设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP

屌yy的博客 5万+

BES (恒玄)HFP通话笔记

1.audio_developer 调试:SDK 需要打开某个算法,需要原厂打开对应宏定义编译出新的SDK,只要涉及到lib库里的功能都需要原厂手动修改编译。开发商和原厂FAE做起来都会比较累。如果没有原厂支持根本没法做,很少文档,SDK也很多问题,没法开箱即用如果要支持audio_developer上位机调试,还需改代码,如果对整个原理不清楚就没法做,没文档只能啃代码调试工具设计的也有待加强,串口通讯调试对耳机这类产品非常麻烦,本来板子就不大,还要焊接一堆线,调试还要拖着串口线。

飞天鱼 686

open(‘D:/useData/data.csv‘,‘a+‘)其中a+的含义

Python操作csv文件 打开读写文件的类型: 1)读相关 r 以只读方式打开文件,文件不存在会异常。 r+ 以可读写方式打开文件,文件不存在会异常。 rb 以二进制只读方式打开文件 ,文件不存在会异常。 rb+ 以二进制读方式打开,可以读写文件,文件不存在会异常。 rt 以文本读方式打开,只能读文件,文件不存在会异常。 rt+ 读写打开一个文本文件,可以读写。 2)写相关 w 以只写方式打开,文件不存在会异常。 如果文件已存在,先清空,

qq_42584734的博客 1964

Nginx的启动、停止与重启命令(非yum方式安装)图解版

目录一、Nginx启动二、Nginx停止的三种方式2.1、第一种方式(从容停止)2.2、第二种方式(快速停止)2.3、第三种方式(强制停止)三、Nginx重启3.1、首先,验证nginx配置文件是否正确3.1.1、验证nginx配置文件(方法一)3.1.1、验证nginx配置文件(方法二)3.2、最后,重启Nginx服务3.2.1、重启Nginx服务(方法一)3.2.2、重启Nginx服务(方法二) 一、Nginx启动 启动代码格式:nginx安装目录地址 -c nginx配置文件地址 /usr/loc

小志的博客 6851

python-文件的使用

一,文件或文件夹是否存在 1,os.path.exists() #1,判断当前路径文件或文件夹是否存在 如果路径 path 存在,返回 True;如果路径 path 不存在,返回 False import os #导入os模块 os.getcwd() #当前路径 print(os.getcwd()) #输出当前路径 f1=os.path.exists('common') #判断该路径是存在否common f2=os.path.exists('demo.py') #判断该路径是存

sun_8923的博客 702

基因组研究之单倍型T2T基因组(一)

单倍型T2T基因组(Haplotype-resolved T2T genome)是一种高精度、高连续性、高完整性的基因组组装技术,它能够提供从端粒到端粒的完整基因组序列,包括所有的基因和非编码序列。完整覆盖:T2T基因组覆盖从端粒到端粒的染色体序列,包含所有的基因和非编码序列,包括以往难以解析的端粒和着丝粒区域。单倍型解析:单倍型T2T基因组能够区分来自父母本的遗传信息,进行亚基因组不对称演化研究,挖掘单倍型等位基因间的表达差异,这对于重测序、性状定位、进化、基因功能、基因编辑等研究至关重要。

2401_89507557的博客 2438

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

玩转Docker小游戏项目系列: Docker部署红心纸牌网页小游戏

jks212454的博客 420

python使用open直接打开一个不确定存在的文件

Python可以使用open命令来打开文件file=open("test.txt")#打开文件 temp=file.read()#读取文件所有内容 print(temp)这里省略了open的另外2个参数,使用默认的只读方式打开。但是如果文件不存在则程序会报错。如果要防止这种情况,就需要在打开前先确认文件是否存在。这需要导入os模块。不过一来还没学到,二来o...

weixin_33841722的博客 6884

文末含资料链接和视频讲解!YOLOv8集成CoordAtt注意力机制详细教程

本文详细介绍了如何在YOLOv8目标检测框架中集成CoordAtt注意力机制。首先解析了CoordAtt的工作原理,它通过分解式池化将位置信息嵌入到通道注意力中,相比传统注意力机制具有更好的空间信息保持能力。然后提供了PyTorch实现代码解析,包括自适应平均池化、Hard-Swish激活函数等关键实现细节。最后概述了YOLOv8架构,为后续集成CoordAtt提供基础。该教程适合具备深度学习基础的开发者,将理论与实践结合,帮助读者掌握这一目标检测优化技术。

FJN110的博客 266

极简AI Agent实现:Python单文件核心工作流解析

AI Agent作为人工智能领域的基础架构范式,其核心在于实现感知-决策-执行的闭环控制。通过轻量级Python实现,可以清晰展示基于LLM(如GPT-3.5)的推理引擎如何驱动工具调用与环境交互。这种极简实现方案特别适合教学演示和原型验证,仅需标准库和OpenAI API即可构建包含记忆机制、安全动作解析等关键组件的智能系统。在客服自动化、数学求解等场景中,此类基础架构能快速验证业务逻辑,其模块化设计也便于扩展为多Agent协作等复杂系统。

weixin_29056865的博客 64

【系统分析师】2025年下半年真题:论文及解题思路

摘要 本文探讨软件测试技术的应用,重点关注静态测试与动态测试的比较。静态测试在不运行程序的情况下,通过审查、走查等方式分析需求、设计文档和代码,能早期发现高层次缺陷,降低修复成本。动态测试通过实际运行程序,使用单元测试、集成测试等方法验证功能性能,是发现运行时错误的唯一途径。二者在缺陷类型、介入阶段和修复成本上具有互补性,建议项目实践中结合使用以提升软件质量。

数据知道的博客 5788

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Nanbeige 4.1-3B极简WebUI作品分享:10组真实对话截图+UI细节放大展示

本文介绍了如何在星图GPU平台上自动化部署🌸 Nanbeige 4.1-3B Streamlit WebUI (极简清爽版)镜像,快速搭建一个沉浸式AI对话界面。该镜像专注于提供极简、流畅的聊天体验,适用于模型测试、创意写作辅助、代码生成与逻辑推理等多种人机对话场景。

BlackironLynx23的博客 245

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

从《牛来》现象看“大垃圾时代”的极简创作与工程实践

在软件工程与产品开发领域,原型验证与快速迭代是核心方法论之一。其原理在于通过最小成本构建可运行版本,以最快速度获取用户反馈,从而验证核心创意的可行性。这种模式的技术价值在于能显著降低试错成本,打破完美主义导致的“发布恐惧症”,让创意得以快速落地。应用场景广泛,从个人技术探索、团队内部沟通,到产品创意验证均可适用。本文以近期热议的《牛来》短片为引,深入探讨了在这种被称为“大垃圾时代”的创作范式下,开发者如何运用“手搓”技术和极简工程思维,实现低成本高反馈的创意验证。文中通过具体示例,如构建一个“程序员冷笑话生

angou6476的博客 387

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

开箱即用的AI对话界面:Nanbeige 4.1-3B极简版部署与体验

本文介绍了如何在星图GPU平台上自动化部署🌸 Nanbeige 4.1-3B Streamlit WebUI (极简清爽版)镜像,快速搭建一个开箱即用的本地AI对话界面。该平台简化了部署流程,用户可轻松获得一个类似手机聊天软件的清爽交互环境,用于日常问答、文本创作及代码生成等场景,实现与本地大模型的流畅对话。

weixin_32456485的博客 166

uv 极简安装指南

本文介绍 uv 的多平台安装、国内 PyPI 与 Python 构建镜像配置,并整理 Python 版本管理、虚拟环境、依赖锁定、常用命令及常见问题,适合想用 uv 替代 pip、virtualenv、pyenv 的开发者快速上手。

san_qilang的博客 363

pinga极简图片批量压缩工具,拖入即优化,有损无损随心选

同时它也保留了灵活的自定义设置,在软件设置界面,可根据需求自由调整压缩级别,还能选择压缩方法 —— 支持有损压缩和无损压缩两种模式。软件的使用方式简单到极致,全程无多余步骤:只需把需要压缩的图片直接拖入软件界面,最后点击【优化】按钮,就能快速完成批量压缩,不用反复调试参数,新手也能一秒上手。

2501_93418458的博客 203

把 Agent 推理核心的模型通道改到 TaoToken,极简模型就能跑通

把 Agent 推理核心的模型通道切到 TaoToken 后,极简模型即可跑通最小可行 Agent(MVA)。文章从照抄全景架构图却卡在 Key 从哪来的真实踩坑切入,补齐注册创建 Key、Base URL 与模型 ID 的配置细节,并给出 Python 推理核心骨架和 Claude Code 的 settings.json 示例。统一通道收敛了 Key、模型 ID 和接口地址,让初学者把精力放回 Agent 逻辑本身。完整步骤见 https://taotoken.net/?utm_source=taoto

weixin_30218749的博客 157

从52万行到515行:极简AI助手核心架构与ReAct模式实践

大语言模型(LLM)作为当前人工智能的核心技术,通过理解与生成自然语言展现出强大的认知能力。其工作原理基于Transformer架构的注意力机制,能够捕捉文本中的长距离依赖关系。在工程实践中,LLM的价值在于能够作为智能中枢,通过API调用与外部工具和环境进行交互,实现复杂任务的自动化处理。这种能力催生了AI代理(AI Agent)这一重要应用方向,它使LLM能够感知环境、规划决策并执行动作。ReAct(Reasoning + Acting)模式是AI Agent实现这一目标的主流范式,它将推理与行动结合在

weixin_30381317的博客 448

Python3极简核心教程:语法要点、环境搭建与常见坑排查

Python3已成为编程入门和工程实践的主流选择,其简洁语法与丰富生态让自动化脚本和数据处理变得更高效。对于开发者来说,真正需要优先掌握的并非高级特性,而是变量、数据结构、函数、文件读写与异常处理等核心语法,这些足以覆盖日常约90%的代码场景。同时,环境搭建与排查能力同样关键:合理使用虚拟环境隔离依赖,能避免系统Python被污染;遇到pyspark报权限错误、麒麟V10编译安装Python等问题时,需要系统化的排查思路。本文以实操为导向,用一个小型命令行工具串联核心知识点,并梳理常见报错速查表,帮助读者快

weixin_29213655的博客 254

南北阁4.1-3B极简WebUI完整教程:从HuggingFace下载模型到UI启动

本文介绍了如何在星图GPU平台上自动化部署🌸 Nanbeige 4.1-3B Streamlit WebUI (极简清爽版)镜像,快速搭建本地大模型对话界面。该平台简化了从模型下载到UI启动的全流程,用户可轻松创建具备流式打字机效果的AI聊天机器人,用于私密、流畅的文本对话与智能问答场景。

weixin_42311427的博客 268

Nanbeige 4.1-3B极简WebUI:打造你的专属二次元AI助手

本文介绍了如何在星图GPU平台上自动化部署🌸 Nanbeige 4.1-3B Streamlit WebUI (极简清爽版)镜像,快速搭建专属二次元AI助手。该镜像提供了一个沉浸式聊天界面,支持流式对话与智能交互,适用于构建本地化的AI聊天机器人,为用户带来愉悦的对话体验。

weixin_42596214的博客 394

Nanbeige 4.1-3B Streamlit WebUI效果对比:原生Streamlit vs 极简二次元UI

本文介绍了如何在星图GPU平台上自动化部署🌸 Nanbeige 4.1-3B Streamlit WebUI (极简清爽版)镜像,快速搭建沉浸式AI对话界面。该镜像通过深度CSS改造,将原生Streamlit界面升级为现代极简二次元风格,实现了丝滑的流式对话体验,适用于本地大语言模型的交互式演示与测试。

weixin_32306683的博客 30
上一篇: 百度翻译使用经验(Python版)
下一篇: Python 获取对象大小和文件大小
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值