超高频RFID读写实战:从硬件连接到EPC Gen2协议指令全解析
2026/6/5 14:47:37
os.walk、扩展名统计等内容是完全衔接的。| 对象 | 说明 |
|---|---|
| 文件(file) | 存储数据的最小单位 |
| 目录(directory) | 用于组织文件和子目录 |
| 路径(path) | 文件或目录的定位方式 |
D:\data\test.txt./data/test.txtopen()open(file,mode='r',encoding=None)常用模式:
| 模式 | 含义 |
|---|---|
r | 读取(默认) |
w | 写入(覆盖) |
a | 追加 |
rb/wb | 二进制读 / 写 |
with openwithopen("data.txt","r",encoding="utf-8")asf:content=f.read()优点:
f.read()# 全部内容f.readline()# 一行f.readlines()# 行列表推荐:
forlineinf:print(line.strip())f.write("hello\n")f.writelines(["a\n","b\n"])os.path.exists(path)os.path.isfile(path)os.path.isdir(path)os.mkdir("dir")# 单层os.makedirs("a/b/c")# 多层os.rmdir("dir")# 空目录os.listdir(path)os.path.join(root,filename)禁止手写:
root+"/"+filename# ❌os.walk()(递归)forroot,dirs,filesinos.walk(path):...| 返回值 | 含义 |
|---|---|
root | 当前目录路径 |
dirs | 子目录名列表 |
files | 文件名列表 |
控制递归:
dirs.remove("venv")forroot,dirs,filesinos.walk(path):...breakname,ext=os.path.splitext(filename)os.path.getsize(path)os.path.getmtime(path)fromcollectionsimportdefaultdictimportos counter=defaultdict(int)forroot,_,filesinos.walk(path):forfinfiles:_,ext=os.path.splitext(f)ext=ext.lower()ifextelse'no_extension'counter[ext]+=1shutil(更安全)importshutil shutil.copy(src,dst)shutil.move(src,dst)shutil.rmtree(dir_path)frompathlibimportPath p=Path("data")forfileinp.rglob("*"):iffile.is_file():print(file.suffix)对比:
| os | pathlib |
|---|---|
| 函数式 | 面向对象 |
| 老标准 | 新推荐 |
| 灵活 | 可读性强 |
path=input("请输入路径: ")withopen("result.txt","w",encoding="utf-8")asf:f.write(str(result))| 错误 | 原因 |
|---|---|
| 文件未关闭 | 未用with open |
| 路径拼接错误 | 手写/ |
| 编码报错 | 未指定encoding |
| 扩展名识别错 | 用split('.') |
| 重复遍历 | os.walk未break |
os.path.join或pathlibos.walksplitextdefaultdict / Counterwith openPython 文件操作 =
open读写 +os.walk遍历 +os.path处理路径