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 模块解包导入,即不要使用:

python 复制代码
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..https://www.runoob.com/python/os-file-methods.html

1. os模块常用函数讲解

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

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

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

python 复制代码
import os

def getFileLists(path):
    list_dir = os.listdir(path)
    for item in list_dir:
        print(item)

getFileLists(".")

1.2 os.mkdirs( ),创建目录

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

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

python 复制代码
def createDir(dir_path):
    os.mkdir(dir_path)

createDir("mkdirTest")

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

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

python 复制代码
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()

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

python 复制代码
os.path.join("aiyc", "do", "python", "dot", "top")

// aiyc\\do\\python\\dot\\top

2.2 os.path.abspath()

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

python 复制代码
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

相关推荐
versatile_zpc16 分钟前
C++初阶:类和对象(上)
开发语言·c++
尘浮生17 分钟前
Java项目实战II基于微信小程序的移动学习平台的设计与实现(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·学习·微信小程序·小程序
娅娅梨1 小时前
C++ 错题本--not found for architecture x86_64 问题
开发语言·c++
汤米粥1 小时前
小皮PHP连接数据库提示could not find driver
开发语言·php
冰淇淋烤布蕾1 小时前
EasyExcel使用
java·开发语言·excel
拾荒的小海螺1 小时前
JAVA:探索 EasyExcel 的技术指南
java·开发语言
秀儿还能再秀2 小时前
机器学习——简单线性回归、逻辑回归
笔记·python·学习·机器学习
马剑威(威哥爱编程)2 小时前
哇喔!20种单例模式的实现与变异总结
java·开发语言·单例模式
白-胖-子2 小时前
【蓝桥等考C++真题】蓝桥杯等级考试C++组第13级L13真题原题(含答案)-统计数字
开发语言·c++·算法·蓝桥杯·等考·13级
好睡凯2 小时前
c++写一个死锁并且自己解锁
开发语言·c++·算法