【Python数据挖掘入门】2. 文本分析-语料库文件读取(os.walkos.path.join方法)

news/2024/4/26 8:01:31/文章来源:https://blog.csdn.net/momomuabc/article/details/129180284

示例数据为Sogou实验室提供的语料数据,下载地址如下:
链接: https://pan.baidu.com/s/1vtHxR4zuEiGd3ot_wj4oeQ 提取码: sh7y

一、 使用os使用示例

使用os.path模块中的os.walk 方法和os.path.join方法,将一个文件夹及文件夹中的全路径读入内存
读取示例:

import os
import os.pathfilepath = []
dirspath = []
for root, dirs, files in os.walk("D:\SogouC.mini\Sample"):#root表示当前正在访问的文件夹路径#dirs 表示该文件夹下的目录名list#files 表示该文件夹下的文件list#遍历文件:for name in files:filepath.append(os.path.join(root,name))#将root和files拼接并读入filepath中#遍历所有的文件夹:for d in dirs:dirspath.append(os.path.join(root,d))#将root和dirs拼接并读入dirspath中
"""
变量查看
filespath:['D:\\SogouC.mini\\Sample\\C000007\\10.txt', 'D:\\SogouC.mini\\Sample\\C000007\\11.txt', 'D:\\SogouC.mini\\Sample\\C000007\\12.txt', 'D:\\SogouC.mini\\Sample\\C000007\\13.txt', 'D:\\SogouC.mini\\Sample\\C000007\\14.txt', 'D:\\SogouC.mini\\Sample\\C000007\\15.txt', 'D:\\SogouC.mini\\Sample\\C000007\\16.txt', 'D:\\SogouC.mini\\Sample\\C000007\\17.txt', 'D:\\SogouC.mini\\Sample\\C000007\\18.txt', 'D:\\SogouC.mini\\Sample\\C000007\\19.txt', 'D:\\SogouC.mini\\Sample\\C000008\\10.txt', 'D:\\SogouC.mini\\Sample\\C000008\\11.txt', 'D:\\SogouC.mini\\Sample\\C000008\\12.txt', 'D:\\SogouC.mini\\Sample\\C000008\\13.txt', 'D:\\SogouC.mini\\Sample\\C000008\\14.txt', 'D:\\SogouC.mini\\Sample\\C000008\\15.txt', 'D:\\SogouC.mini\\Sample\\C000008\\16.txt', 'D:\\SogouC.mini\\Sample\\C000008\\17.txt', 'D:\\SogouC.mini\\Sample\\C000008\\18.txt', 'D:\\SogouC.mini\\Sample\\C000008\\19.txt', 'D:\\SogouC.mini\\Sample\\C000010\\10.txt', 'D:\\SogouC.mini\\Sample\\C000010\\11.txt', 'D:\\SogouC.mini\\Sample\\C000010\\12.txt', 'D:\\SogouC.mini\\Sample\\C000010\\13.txt', 'D:\\SogouC.mini\\Sample\\C000010\\14.txt', 'D:\\SogouC.mini\\Sample\\C000010\\15.txt', 'D:\\SogouC.mini\\Sample\\C000010\\16.txt', 'D:\\SogouC.mini\\Sample\\C000010\\17.txt', 'D:\\SogouC.mini\\Sample\\C000010\\18.txt', 'D:\\SogouC.mini\\Sample\\C000010\\19.txt', 'D:\\SogouC.mini\\Sample\\C000013\\10.txt', 'D:\\SogouC.mini\\Sample\\C000013\\11.txt', 'D:\\SogouC.mini\\Sample\\C000013\\12.txt', 'D:\\SogouC.mini\\Sample\\C000013\\13.txt', 'D:\\SogouC.mini\\Sample\\C000013\\14.txt', 'D:\\SogouC.mini\\Sample\\C000013\\15.txt', 'D:\\SogouC.mini\\Sample\\C000013\\16.txt', 'D:\\SogouC.mini\\Sample\\C000013\\17.txt', 'D:\\SogouC.mini\\Sample\\C000013\\18.txt', 'D:\\SogouC.mini\\Sample\\C000013\\19.txt', 'D:\\SogouC.mini\\Sample\\C000014\\10.txt', 'D:\\SogouC.mini\\Sample\\C000014\\11.txt', 'D:\\SogouC.mini\\Sample\\C000014\\12.txt', 'D:\\SogouC.mini\\Sample\\C000014\\13.txt', 'D:\\SogouC.mini\\Sample\\C000014\\14.txt', 'D:\\SogouC.mini\\Sample\\C000014\\15.txt', 'D:\\SogouC.mini\\Sample\\C000014\\16.txt', 'D:\\SogouC.mini\\Sample\\C000014\\17.txt', 'D:\\SogouC.mini\\Sample\\C000014\\18.txt', 'D:\\SogouC.mini\\Sample\\C000014\\19.txt', 'D:\\SogouC.mini\\Sample\\C000016\\10.txt', 'D:\\SogouC.mini\\Sample\\C000016\\11.txt', 'D:\\SogouC.mini\\Sample\\C000016\\12.txt', 'D:\\SogouC.mini\\Sample\\C000016\\13.txt', 'D:\\SogouC.mini\\Sample\\C000016\\14.txt', 'D:\\SogouC.mini\\Sample\\C000016\\15.txt', 'D:\\SogouC.mini\\Sample\\C000016\\16.txt', 'D:\\SogouC.mini\\Sample\\C000016\\17.txt', 'D:\\SogouC.mini\\Sample\\C000016\\18.txt', 'D:\\SogouC.mini\\Sample\\C000016\\19.txt', 'D:\\SogouC.mini\\Sample\\C000020\\10.txt', 'D:\\SogouC.mini\\Sample\\C000020\\11.txt', 'D:\\SogouC.mini\\Sample\\C000020\\12.txt', 'D:\\SogouC.mini\\Sample\\C000020\\13.txt', 'D:\\SogouC.mini\\Sample\\C000020\\14.txt', 'D:\\SogouC.mini\\Sample\\C000020\\15.txt', 'D:\\SogouC.mini\\Sample\\C000020\\16.txt', 'D:\\SogouC.mini\\Sample\\C000020\\17.txt', 'D:\\SogouC.mini\\Sample\\C000020\\18.txt', 'D:\\SogouC.mini\\Sample\\C000020\\19.txt', 'D:\\SogouC.mini\\Sample\\C000022\\10.txt', 'D:\\SogouC.mini\\Sample\\C000022\\11.txt', 'D:\\SogouC.mini\\Sample\\C000022\\12.txt', 'D:\\SogouC.mini\\Sample\\C000022\\13.txt', 'D:\\SogouC.mini\\Sample\\C000022\\14.txt', 'D:\\SogouC.mini\\Sample\\C000022\\15.txt', 'D:\\SogouC.mini\\Sample\\C000022\\16.txt', 'D:\\SogouC.mini\\Sample\\C000022\\17.txt', 'D:\\SogouC.mini\\Sample\\C000022\\18.txt', 'D:\\SogouC.mini\\Sample\\C000022\\19.txt', 'D:\\SogouC.mini\\Sample\\C000023\\10.txt', 'D:\\SogouC.mini\\Sample\\C000023\\11.txt', 'D:\\SogouC.mini\\Sample\\C000023\\12.txt', 'D:\\SogouC.mini\\Sample\\C000023\\13.txt', 'D:\\SogouC.mini\\Sample\\C000023\\14.txt', 'D:\\SogouC.mini\\Sample\\C000023\\15.txt', 'D:\\SogouC.mini\\Sample\\C000023\\16.txt', 'D:\\SogouC.mini\\Sample\\C000023\\17.txt', 'D:\\SogouC.mini\\Sample\\C000023\\18.txt', 'D:\\SogouC.mini\\Sample\\C000023\\19.txt', 'D:\\SogouC.mini\\Sample\\C000024\\10.txt', 'D:\\SogouC.mini\\Sample\\C000024\\11.txt', 'D:\\SogouC.mini\\Sample\\C000024\\12.txt', 'D:\\SogouC.mini\\Sample\\C000024\\13.txt', 'D:\\SogouC.mini\\Sample\\C000024\\14.txt', 'D:\\SogouC.mini\\Sample\\C000024\\15.txt', 'D:\\SogouC.mini\\Sample\\C000024\\16.txt', 'D:\\SogouC.mini\\Sample\\C000024\\17.txt', 'D:\\SogouC.mini\\Sample\\C000024\\18.txt', 'D:\\SogouC.mini\\Sample\\C000024\\19.txt']
dirspath:['D:\\SogouC.mini\\Sample\\C000007', 'D:\\SogouC.mini\\Sample\\C000008', 'D:\\SogouC.mini\\Sample\\C000010', 'D:\\SogouC.mini\\Sample\\C000013', 'D:\\SogouC.mini\\Sample\\C000014', 'D:\\SogouC.mini\\Sample\\C000016', 'D:\\SogouC.mini\\Sample\\C000020', 'D:\\SogouC.mini\\Sample\\C000022', 'D:\\SogouC.mini\\Sample\\C000023', 'D:\\SogouC.mini\\Sample\\C000024']"""

二、os方法详解

1.os.walk()

我们来详细看下os.walk的运行逻辑:
os.walk(a)方法中,a是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。

  • root 所指的是当前正在遍历的这个文件夹的本身的地址
  • dirs 是一个 list ,内容是该文件夹中所有的子文件夹的名字(不包括再下级目录),若只有文件无子文件夹,则为空。
  • files 同样是 list , 内容是该文件夹中所有的文件(不包括再下级目录),若只有子文件夹无文件,则为空。

遍历的文件结构如下(过长,重复内容已省略):
Sample:.
├─C000007
│ 10.txt
│ 11.txt
│ 12.txt
│ 13.txt
│ 14.txt
│ 15.txt
│ 16.txt
│ 17.txt
│ 18.txt
│ 19.txt

├─C000008
│ 同C000007
├─C000010
│ 同C000007
├─C000013
│ 同C000007
├─C000014
│ 同C000007
├─C000016
│ 同C000007
├─C000020
│ 同C000007
├─C000022
│ 同C000007
├─C000023
│ 同C000007
└─C000024
同C000007

下面来看下遍历过程

import os.pathfor root, dirs, files in os.walk("D:\SogouC.mini\Sample"):print("root:",root)print("dirs:",dirs)print("files:",files)"""
运行结果:
第一次遍历:读取第一层,只有子文件夹,无文件,files为空
root: D:\SogouC.mini\Sample
dirs: ['C000007', 'C000008', 'C000010', 'C000013', 'C000014', 'C000016', 'C000020', 'C000022', 'C000023', 'C000024']
files: []第二次遍历:读取第二层中的第一个文件夹C000007,无子文件夹,dirs为空
root: D:\SogouC.mini\Sample\C000007
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']第三次遍历:读取第二层中的第二个文件夹C000008,无子文件夹,dirs为空
root: D:\SogouC.mini\Sample\C000008
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']第四次遍历:读取第二层中的第三个文件夹C0000010,无子文件夹,dirs为空
root: D:\SogouC.mini\Sample\C000010
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']以下为重复操作,第五次
root: D:\SogouC.mini\Sample\C000013
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
第六次
root: D:\SogouC.mini\Sample\C000014dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
七
root: D:\SogouC.mini\Sample\C000016
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
八
root: D:\SogouC.mini\Sample\C000020
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
九
root: D:\SogouC.mini\Sample\C000022
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
十
root: D:\SogouC.mini\Sample\C000023
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
十一
root: D:\SogouC.mini\Sample\C000024
dirs: []
files: ['10.txt', '11.txt', '12.txt', '13.txt', '14.txt', '15.txt', '16.txt', '17.txt', '18.txt', '19.txt']
"""

可以看到输出了十一次root、dirs、files

这是因为1个根目录、加上10个子目录,一共11个目录,所以会遍历4次。
另外os.walk的遍历文件方式是深度遍历,即会在第一个子文件夹中遍历至叶子节点后,再遍历其他子文件夹。

2. os.path.join()

os.path.join()函数用于路径拼接文件路径。使用要点:

  • 如果各组件名首字母不包含’/’,则函数会自动加上’/’;
  • 如果有一个组件是一个绝对路径,即带有‘/’,则在它之前的所有组件均会被舍弃;
  • 如果最后一个组件为空,则生成的路径以一个’/’分隔符结尾;
  • 如果不显示地添加斜杠‘/’,那么程序会自动添加反斜杠‘\’;
  • 要使用斜杠,就在所有路径的后面都添加上‘/’,否则会导致斜杠和反斜杠混乱!!
  • 在Windows系统下,路径既可以使用斜杠连接,也可以使用反斜杠连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73050.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记一次docker虚拟机横向移动渗透测试

本次渗透在几个docker虚拟机间多次横向移动,最终找到了一个可以进行docker逃逸的出口,拿下服务器。渗透过程曲折但充满了乐趣,入口是172.17.0.6的docker虚拟机,然后一路横向移动,最终在172.17.0.2出实现了docker逃逸&a…

【vue2每日小知识】实现store中modules模块的封装与自动导入

🥳博 主:初映CY的前说(前端领域) 🌞个人信条:想要变成得到,中间还有做到! 🤘本文核心:省去我们store仓库中分模块时的需要每次导入index的问题 目录 【前言】在store中如何简…

ELK日志分析--Filebeat

ELK架构 Filebeat简介 Filebeat安装 Filebeat简单使用 专用日志搜集模块 案例模块-Nginx 模块 重读日志文件 使用Processors(处理器)过滤和增强数据 1.ELK架构 2.Filebeat简介 可以使用 Filebeat 收集各种日志,之后发送到指定的目标系统上,但是同…

软件测试面试题 —— 整理与解析(1)

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:🌎【Austin_zhai】🌏 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能&#xf…

【华为OD机试真题】用 C++ 实现 - 数字加减游戏

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

程序员如何发展第二职业?这几种副业方式超赚钱

很多程序员曾表示,虽然月薪一两万,但有时候还是会焦虑。 尤其是遇上了年初裁员年底裁员这样的就业环境,焦虑就会逐步放大,这时候副业赚钱的重要性就体现出来了。 发展第二职业,可以让程序员们增加抗风险能力&#xf…

数据结构-考研难点代码突破(树型查找 - 红黑树(RBT)插入流程图,删除)

文章目录1. 红黑树的定义和性质红黑树的插入操作流程红黑树的删除(了解)1. 红黑树的定义和性质 红黑树查找与删除的效率和AVL树相同。 但是因为AVL树在插入或删除节点可能破坏AVL树结构,而重新调整树的开销大。所以引出了红黑树。 红黑树的…

【Jmeter】ForEach控制器

一、什么是ForEach控制器 ForEach控制器是遍历某个数组读取不同的变量值,来控制其下的采样器或控制器执行一次或多次。而这个数组可以是用户自定义变量,也可以是从前面接口请求中提取到需要的数据,然后进行遍历循环。 二、ForEach控制器相关…

技能提升:Python技术应用工程师职业技能提升

职业技术培训-Python技术应用工程师分为高级培训班、中级培训班及初级培训班。 Python是一种跨平台的计算机程序设计语言,是一个高层次的结合了解释性、编译性、互动性和面向对象的语言。最初被设计用于编写自动化脚本Shell(适用于Linux操作系统&#xf…

Linux PWM 开发指南

Linux PWM 开发指南 1 概述 1.1 编写目的 介绍 PWM 模块的详细设计方便相关人员进行 PWM 模块的代码设计开发。 1.2 使用范围 适用于 Linux-3.10,linux-4.4 和 Linux-4.9 内核,Linux-5.4 内核。 1.3 相关人员 PWM 驱动的开发人员/维护人员等 2 术…

数据库系统概论——绪论

1、绪论 1.1、数据库系统概述 数据库系统的构成示意图 1.1.1、数据库系统基本概念 基本概念:数据、数据库、数据库管理系统和数据库系统 1)数据(data) 定义:描述事物的符号记录称为数据数据是数据库中存储的基本对象…

中科检测赴中科院广州电子CASAIM开展座谈会,围绕3D打印、三维扫描和精密测量展开深入交流

2月9日,中科检测技术服务(广州)股份有限公司(简称:中科检测)一行到访中科院广州电子技术有限公司,参观广东省增材制造工程实验室和三维扫描及精密测量重点实验室,就3D打印、三维扫描和精密测量相关技术内容…

NTP同步时钟为医院提供标准的时间信号

NTP同步时钟应用于城市重要公共领域,如车站、学校、医院、等。NTP同步时钟可提供准确的公众时间,为人们的日常生活提供便利,避免了因时钟不准确而带来的不便。NTP同步时钟采用智能模块化设计,与同类产品相比,更突出了安…

JavaScript Web API实战:7个小众技巧让你的网站瞬间提升用户体验

随着技术的日新月异,为开发人员提供了令人难以置信的新工具和API。但据了解,在100 多个 API中,只有5%被开发人员积极使用。 让我们来看看一些有用的Web API,它们可以帮助您将网站推向月球! 1、 截屏接口 Screen Capt…

ELK日志分析--Logstash

Logstash简介 Logstash安装 测试运行 配置输入和输出 使用Geoip过滤器插件增强数据编辑 配置接收 Beats 的输入 1.Logstash简介 Logstash管道具有两个必需元素input和output,以及一个可选元素filter。输入插件使用来自源的数据,过滤器插件根据你的…

shell的测试语句

一、shell的条件测试语句 在写shell脚本时,经常遇到的问题就是判断字符串是否相等,可能还要检查文件状态或进 行数字测试,只有这些测试完成才能做下一步动作。 1.1、shell脚本中的条件测试如下: 1、文件测试 2、字符串测试 3、数…

《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(带解析)(三)

声明:此系列答案配套《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误…

java JMM 内存屏障

内存屏障的目的 每个CPU都会有自己的缓存(有的甚至L1,L2,L3),缓存的目的就是为了提高性能,避免每次都要向内存取。但是这样的弊端也很明显:不能实时的和内存发生信息交换,分在不同CPU执行的不同线程对同一…

基于SPI的增强式插件框架设计

很久之前,为了诊断线上的问题,就想要是能有工具可以在线上出问题的时候,放个诊断包进去马上生效,就能看到线上问题的所在,那该是多么舒服的事情。后来慢慢的切换到 java 领域后,这种理想也变成了现实&#…

【selenium 自动化测试】如何搭建自动化测试环境,搭建环境过程应该注意的问题

最近也有很多人私下问我,selenium学习难吗,基础入门的学习内容很多是3以前的版本资料,对于有基础的人来说,3到4的差别虽然有,但是不足以影响自己,但是对于没有学过的人来说,通过资料再到自己写的…