Python从入门到网络爬虫(OS模块详解)

前言

本章介绍python自带模块os,os为操作系统 operating system 的简写,意为python与电脑的交互。os 模块提供了非常丰富的方法用来处理文件和目录。通过使用 os 模块,一方面可以方便地与操作系统进行交互,另一方面页可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出 OSError 异常或其子类异常。

在前面的讲解中我们学习过open()、write()、read()等方法来打开文件和读写文件,那我们需要什么时候用Python内置函数,什么时候用OS模块呢?

注意:模块提供了一种使用与操作系统相关的功能的便捷式途径。如果是读写文件的话,建议使用内置函数 open() ;如果是路径相关的操作,建议使用 os 的子模块 os.path ;如果要逐行读取多个文件,建议使用 fileinput 模块;要创建临时文件或路径,建议使用 tempfile 模块;要进行更高级的文件和路径操作则应当使用 shutil 模块。

此外,导入 os 模块时还要小心一点,千万 不要 为了图调用省事儿而将os 模块解包导入,即不要使用: 

from os import *

来导入os 模块;否则 os.open() 将会覆盖内置函数 open() ,从而造成预料之外的错误。 

 下面总结了OS模块最常用的一些方法

listdir( )返回path指定的文件夹包含的文件或文件夹的名字的列表。
mkdir( )创建目录
makedirs( )递归创建目录
remove( )删除文件
rmdir( )删除指定目录
removedirs( )递归删除目录
rename( )重命名文件或目录,从 src 到 dst
getcwd( )获取当前工作目录,即当前python脚本工作的目录路径
chdir( )改变当前脚本工作目录;相当于shell下cd
stat( )获取文件/目录信息

 更多方法请参考:Python OS 文件/目录方法 | 菜鸟教程Python OS 文件/目录方法 os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示: 序号方法及描述 1os.access(path, mode)检验权限模式 2os.chdir(path)改变当前工作目录 3os.chflags(path, flags)设置路径的标记为数字标记。 4os.chmod(path, mode)更改权限 5os.chown(path, uid, gid)更改文件所有者 6..icon-default.png?t=N7T8https://www.runoob.com/python/os-file-methods.html

1. os模块常用函数讲解 

1.1 os.listdir( ),返回目录下的所有文件、目录列表

listdir 即 list directories,列出(当前)目录下的全部路径(及文件)。该函数存在一个参数,用以指定要列出子目录的路径,默认为 .,即“当前路径”。

函数返回值是一个列表,其中各元素均为字符串,分别是各路径名和文件名。

import osdef getFileLists(path):list_dir = os.listdir(path)for item in list_dir:print(item)getFileLists(".")

1.2 os.mkdirs( ),创建目录

mkdir,即 make directory,用处是 新建一个路径。需要传入一个类路径参数用以指定新建路径的位置和名称,如果指定路径已存在,则会抛出 FileExistsError 异常。

该函数只能在已有的路径下新建一级路径,否则(即新建多级路径)会抛出 FileNotFoundError 异常。

def createDir(dir_path):os.mkdir(dir_path)createDir("mkdirTest")

1.3 os.makedirs( ),递归创建目录

在需要新建多级路径的场景下,可以使用 os.makedirs() 来完成任务。函数 os.makedirs() 执行的是递归创建,若有必要,会分别新建指定路径经过的中间路径,直到最后创建出末端的 “叶子路径”。

def createDirs(dir_path):os.makedirs(dir_path)createDirs("dirs/test/makedirs")

1.4 os.remove( ),删除文件

如果指定路径是目录而非文件的话,就会抛出 IsADirectoryError 异常。

1. 5 os.rmdir( ),删除目录

1.6 os.removedirs( ),递归删除目录。

1.7 os.rename( ),函数的作用是将文件或路径重命名

一般调用格式为 os.rename(src, dst) ,即将 src 指向的文件或路径重命名为 dst 指定的名称。

1.8 os.chdir( ) 改变当前工作目录

2. os.path常用方法

其实这个模块是 os 模块根据系统类型从另一个模块导入的,并非直接由 os 模块实现,比如 os.name 值为 nt,则在 os 模块中执行 import ntpath as path ;如果 os.name 值为 posix ,则导入posixpath

使用该模块要注意一个很重要的特性:os.path 中的函数基本上是纯粹的字符串操作。换句话说,传入该模块函数的参数甚至不需要是一个有效路径,该模块也不会试图访问这个路径,而仅仅是按照“路径”的通用格式对字符串进行处理。

更进一步地说,os.path 模块的功能我们都可以自己使用字符串操作手动实现,该模块的作用是让我们在实现相同功能的时候不必考虑具体的系统,尤其是不需要过多关注文件系统分隔符的问题。

2.1 os.path.join() 

可以将多个传入路径组合为一个路径。实际上是将传入的几个字符串用系统的分隔符连接起来,组合成一个新的字符串,所以一般的用法是将第一个参数作为父目录,之后每一个参数即使下一级目录,从而组合成一个新的符合逻辑的路径。

os.path.join("aiyc", "do", "python", "dot", "top")// aiyc\\do\\python\\dot\\top

2.2 os.path.abspath()

也就是说当传入路径符合“绝对路径”的格式时,该函数仅仅将路径分隔符替换为适应当前系统的字符,不做其他任何操作,并将结果返回。所谓“绝对路径的格式”,其实指的就是一个字母加冒号,之后跟分隔符和字符串序列的格式:

os.path.abspath("a:/aiyc/do//python")
# 'a:\\aiyc\\do\\python'

2.3 os.path.basename()

该函数返回传入路径的 “基名”,即传入路径的最下级目录。

2.4 os.path.dirname()

与上一个函数正好相反,返回的是最后一个分隔符前的整个字符串:

2.5 os.path.split()

函数 os.path.split() 的功能就是将传入路径以最后一个分隔符为界,分成两个字符串,并打包成元组的形式返回;

前两个函数 os.path.dirname() 和 os.path.basename() 的返回值分别是函数 os.path.split() 返回值的第一个、第二个元素。

2.6 os.path.exists() 路径是否存在

这个函数用于判断路径所指向的位置是否存在。若存在则返回 True ,不存在则返回 False :

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

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

相关文章

论文阅读《Generalizing Face Forgery Detection with High-frequency Features》

高频噪声分析会过滤掉图像的颜色内容信息。 本文设计了三个模块来充分利用高频特征, 1.多尺度高频特征提取模块 2.双跨模态注意模块 3.残差引导空间注意模块(也在一定程度上体现了两个模态的交互) SRM是用于过滤图像的高频噪声 输入的图…

【C++期末】酒店住宿信息管理系统(含easyX)

诚接计算机专业编程作业(C语言、C、Python、Java、HTML、JavaScript、Vue等),如有需要请私信我,或者加我的企鹅号:1404293476 本文资源:https://download.csdn.net/download/weixin_47040861/88725363 目录 1.题目要求 2.实现效…

Vue3:Axios配置及使用

Axios官方 一、安装: //使用 npm: $ npm install axios//使用 bower: $ bower install axios//使用 yarn: $ yarn add axios 在package-lock.json文件可以查看axios版本 二、配置: milliaAxios.js 配置axios import axios from axios // 创建一个 ax…

element的Table表格组件树形数据与懒加载简单使用

目录 1. 代码实现2. 效果图3. 解决新增、删除、修改之后树节点不刷新问题。&#xff08;[参考文章](https://blog.csdn.net/weixin_41549971/article/details/135504471)&#xff09; 1. 代码实现 <template><div><!-- lazy 是否懒加载子节点数据 --><!-…

美信科技盘古信息智能车间项目成功验收,打造电子元器件数字化工厂标杆

作为一家深耕于磁性元器件领域近二十年的制造企业&#xff0c;广东美信科技股份有限公司&#xff08;以下简称“美信科技”&#xff09;始终秉承着“为电磁赋能&#xff0c;创工业至美”的企业使命&#xff0c;为中国制造卓越发展贡献力量。在当今数字化时代&#xff0c;制造企…

【C++】深入了解构造函数之初始化列表

目录 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 2&#xff09;不同成员变量赋值 2、初始化列表 一、再谈构造函数 1、引入 1&#xff09;构造函数体赋值 在创建对象时&#xff0c;编译器通过调用构造函数&#xff0c;给对象中各个成员变量一个合适的初始值…

世邦spon IP网络对讲广播系统任意文件上传漏洞

产品介绍 世邦通信IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统存在任意文件上传漏洞&#xff0c;攻击者可以通过构造特殊请求包上传恶意后门文件&#xff0c;从…

深入理解 Flink(一)Flink 架构设计原理

大数据分布式计算引擎设计实现剖析 MapReduce MapReduce 执行引擎解析 MapReduce 的组件设计实现图 Spark 执行引擎解析 Spark 相比于 RM 的真正优势的地方在哪里&#xff1a;&#xff08;Simple、Fast、Scalable、Unified&#xff09; DAG 引擎中间计算结果可以进行内存持…

掌握设计模式:深入了解命令模式的优雅调度与行为解耦

命令模式是一种行为设计模式&#xff0c;其目的是将请求发送者和接收者解耦&#xff0c;从而允许发送者发送请求&#xff0c;而无需知道请求的具体处理方式。在命令模式中&#xff0c;请求被封装为一个对象&#xff0c;这个对象包含了执行请求所需的所有信息&#xff0c;包括调…

解析器:request.body、request.POST、request.data

request.POST与request.body&#xff1a; django中的request.POST只能取到Content-Type(请求头)为application/x-www-form-urlencoded(form表单默认格式)的数据&#xff0c;如果请求头为application/json(json格式)&#xff0c;multipart/form-data(文件)等格式无法取到&#x…

世邦通信SPON IP网络对讲广播系统未授权访问

产品介绍 世邦通信SPON IP网络对讲广播系统采用领先的IPAudio™技术,将音频信号以数据包形式在局域网和广域网上进行传送,是一套纯数字传输系统。 漏洞描述 spon IP网络对讲广播系统getuserdata.php存在未授权访问漏洞&#xff0c;攻击者可通过该漏洞在服务器端读取账户密码…

软件工程各种图

参考视频&#xff1a; 6 分钟学会 UML 类图_哔哩哔哩_bilibili 5 分钟学会 UML 时序图&#xff08;顺序图、序列图&#xff09;_哔哩哔哩_bilibili 3 分钟学会 UML 活动图_哔哩哔哩_bilibili 6 分钟学会 UML 用例图_哔哩哔哩_bilibili 是真的讲的非常好&#xff01;&#…

Aloha 机械臂的学习记录3——AWE:Pycharm运行代码记录

之前的博客创作了三偏关于Aloha_AWE的liunx终端指令运行代码的示例: Aloha 机械臂的学习记录——AWE&#xff1a;Bimanual Simulation Suite: https://blog.csdn.net/qq_54900679/article/details/134889183?spm1001.2014.3001.5502 Aloha 机械臂的学习记录1——AWE&#x…

Python 与 PySpark数据分析实战指南:解锁数据洞见

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 数据分析是当今信息时代中至关重要的技能之一。…

免费运维工具测评——深入使用牧云主机管理助手

作为一名运维&#xff0c;宝塔&#xff0c;Nezha 监控面板&#xff0c;WinSCP&#xff0c;Termius 都用过了&#xff0c;谈一下自己的感受&#xff1a; 安装绑定 微信扫码可直接登录&#xff0c;主页简洁清晰&#xff0c;即使是个人体验版也没有任何广告。 只需要复制命令在服…

基于神经网络的手写汉字提取与书写评分系统研究

相关源码和文档获取请私聊QQ:3106089953 论文目录结构 目 录 摘 要 I Abstract II 目 录 IV 第1章 绪论 1 1.1. 研究背景与意义 1 1.2. 国内外研究现状 2 1.2.1. 文本定位技术研究现状 2 1.2.2. 手写汉字识别研究现状 3 1.2.3. 汉字书写质量评价方法研究现状 4 1.3. 本文所做工…

Linux驱动开发(1)-最简单的字符设备驱动开发例子

1.简介 字符设备驱动&#xff1a;按照字节流进行读写操作的设备&#xff0c;例如点灯、按键、IIC、SPI、LCD。 Linux系统中一切皆文件&#xff0c;驱动加载成功&#xff0c;就会在/dev目录生成文件&#xff0c;对文件操作&#xff0c;则可实现对硬件操作。应用程序运行在用户…

Leetcode242有效的字母异位词(java实现,详细易懂想学会的进!!!)

今天给大家分享的题目是leetcode242有效的字母异位词 我们先看题目描述&#xff1a; Chatgpt中对于字母异位词的解释如下&#xff1a; 字母异位词是指由相同的字母组成但顺序不同的单词。换句话说&#xff0c;字母异位词具有相同的字母&#xff0c;只是排列顺序不同。 简单的将…

华云安攻击面发现及管理平台体验

省流&#xff1a; 无需【立即咨询】即可体验&#xff0c;开通即可查看演示数据&#xff0c;公开报价 界面&#xff1a; 界面简洁&#xff0c;要点清晰&#xff0c;可以清晰的看到暴露面及攻击面信息 功能&#xff1a; 资产发现&#xff1a;主域名发现、子域名发现、 IP 发现…

Set和Map

一、Set的介绍 1.1、Set相关文档介绍 cplusplus.com/reference/set/set/?kwset 1. set是按照一定次序存储元素的容器 2. 在set中&#xff0c;元素的value也标识它(value就是key&#xff0c;类型为T)&#xff0c;并且每个value必须是唯一的。 set中的元素不能在容器中修改…