一 前言

OS(operating system)直接对操作系统进行操作的接口,功能真是非常强大;允许知识追寻者简要概括一下整体模块

  1. 如果要对文件进行读写可以使用os.open()方法
  2. 如果要对文件路径进行操作可以使用os.path模块
  3. 如果要对所有文件的所有行读取到命令行进行操作可以使用fileinput模块
  4. 如果要创建临时文件可以使用tempfile模块
  5. 如果要对高级文件或者目录进行处理可以使用shutil模块

知识的体系很重要,比如很多书籍文章只知如何使用OS对路径进行操作,但整体的OS是什么,包含哪些模块都没有介绍。本文的重点是对path进行操作,参和一些os常用函数,结合之前文件操作的专题可以达到很好的效果;

二 OS常用函数介绍

函数名 函数说明
os.getcwd() 返回工作目录
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回基本名
os.path.commonpath(paths) 返回所有路径中共同的最长的子路径
os.path.commonprefix(list) 返回所有路径中共同的前缀
os.path.dirname(path) 返回当前文件所在的目录
os.path.exists(path) 判定目录是否存在,存在返回True, 否则False
os.path.getatime(path) 返回上一次进入路径的时间
os.path.getmtime(path) 返回上一次路径修改的时间
os.path.getctime(path) unix返回元数据修改时间,windows返回路径创建时间
os.path.getsize(path) 返回路径的大小,单位字节
os.path.isabs(path) 判定是否是绝对路径,是返回True,否则False
os.path.isfile(path) 判定是否是文件,是返回True,否则False
os.path.isdir(path) 判定是否是目录,是返回True,否则False
os.path.islink(path) 是否是链接文件,是返回True,否则False
os.path.join(path, *paths) 路径拼接
os.path.normcase(path) windows平台路径字母全部转为小写,如果存在斜杆会转为反斜杠
os.path.relpath(path, start=os.curdir) 返回与start比较后的相对路径
os.path.split(path) 以基本名为基准切割路径
os.makedirs() 创建文件夹

三 函数具体操作

3.1 os.getcwd()

获取当前工作目录

# -*- coding: utf-8 -*-
import os """ 获取当前工作 """
print(os.getcwd())

输出:

C:\python_work\study_py_base\base\fileopration

3.2os.path.abspath(path)

返回绝对路径,. 号表示当前目录

# -*- coding: utf-8 -*-
import os """ 返回绝对路径 """
print(os.path.abspath("."))

输出:

C:\python_work\study_py_base\base\fileopration

3.3 os.path.basename(path)

返回基本名,基本名也就是文件的简单名称比如 zszxz.txt;

# -*- coding: utf-8 -*-
import os
"""返回基本名""" print(os.path.basename("C:\python_work\study_py_base\base\fileopration\os_op.py"))

输出:

os_op.py

3.4os.path.commonpath(paths)

返回共同的路径,最大长度返回;

# -*- coding: utf-8 -*-
import os """ 返回共同的路径 """
print(os.path.commonpath(['/usr/var/lib','/usr/lib']))

返回结果:

\usr

3.5os.path.commonprefix(list)

返回路径的共同前缀。注意,前缀跟3.4节的共同路径是不同的东西;

# -*- coding: utf-8 -*-
import os """ 返回路径共同前缀 """
print(os.path.commonprefix(['/usr/var/lib','/usr/lib']))

返回结果:

/usr/

3.6 os.path.dirname(path)

返回目录,lib的目录是/usr/var

# -*- coding: utf-8 -*-
import os """ 返回目录 """
print(os.path.dirname('/usr/var/lib'))

输出:

/usr/var

3.7 os.path.exists(path)

判定目录是否存在,存在返回True, 否则False

# -*- coding: utf-8 -*-
import os """判定路径是否存在"""
print(os.path.exists('/usr/var/lib'))
print(os.path.exists('C:\python_work'))

输出:

False
True

3.8 os.path.getatime(path)

返回上一次进入路径的时间

# -*- coding: utf-8 -*-
import os print(os.path.getatime('C:\python_work'))

输出:

1578921313.4634616

3.9 os.path.getmtime(path)

返回上一次路径修改的时间

# -*- coding: utf-8 -*-
import os """返回上一次路径修改的时间"""
print(os.path.getmtime('C:\python_work'))

输出:

1578921313.4634616

3.10 os.path.getctime(path)

unix返回元数据修改时间,windows返回路径创建时间

# -*- coding: utf-8 -*-
import os """unix返回元数据修改时间,windows返回路径创建时间"""
print(os.path.getctime('C:\python_work'))

输出:

1577777602.8199444

3.11 os.path.getsize(path)

返回路径的大小,单位字节;

# -*- coding: utf-8 -*-
import os """返回路径的大小,单位字节;"""
print(os.path.getsize('.'))

输出:

4096

3.12 os.path.isabs(path)

判定是否是绝对路径,是返回True,否则False

# -*- coding: utf-8 -*-
import os """ 判定是否是绝对路径"""
print(os.path.isabs('.'))
print(os.path.isabs('C:\python_work'))

输出:

False
True

3.13 os.path.isfile(path)

判定是否是文件,是返回True,否则False

# -*- coding: utf-8 -*-
import os """ 判定是否是文件 """
print(os.path.isfile('os_op.py'))
print(os.path.isfile('.'))

输出

True
False

3.14 os.path.isdir(path)

判定是否是目录,是返回True,否则False

# -*- coding: utf-8 -*-
import os
print(os.path.isdir('os_op.py'))
print(os.path.isdir('.'))

输出:

False
True

3.15 os.path.islink(path)

是否是链接文件,是返回True,否则False, 需要被python运行时环境所支持,否则会一直返回False

# -*- coding: utf-8 -*-
import os """是否是链接文件"""
print(os.path.islink('os_op.py'))

3.16 os.path.join(path, *paths)

路径拼接

# -*- coding: utf-8 -*-
import os print(os.path.join('usr', 'local','bin'))

输出

usr\local\bin

3.17 os.path.normcase(path)

windows平台路径字母全部转为小写,如果存在斜杆会转为反斜杠,其它平台不改变

# -*- coding: utf-8 -*-
import os
print(os.path.normcase('/USR/Local/bin'))

输出:

\usr\local\bin

3.18 os.path.relpath(path, start=os.curdir)

返回与start比较后的相对路径

# -*- coding: utf-8 -*-
import os
print(os.path.relpath('C:\python_work', 'C:\\'))

输出

python_work

3.19 os.path.split(path)

以基本名为基准切割路径

# -*- coding: utf-8 -*-
import os
print(os.path.split('C:\python_work\study_py_base\base\fileopration\os_op.py'))

输出

('C:\\python_work\\study_py_base\x08ase\x0cileopration', 'os_op.py')

3.20 os.makedirs()

创建文件夹

os.makedirs('C:\mydata\generator\py')

python专题知识追寻者对OS的理解的更多相关文章

  1. Python专题三字符串的基础知识

    Python专题三字符串的基础知识 在Python中最重要的数据类型包括字符串.列表.元组和字典等.该篇主要讲述Python的字符串基础知识. 一.字符串基础 字符串指一有序的字符序列集合,用单引号. ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. python 基础知识(一)

    python 基础知识(一) 一.python发展介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本 ...

  4. 适用于 PHP 开发人员的 Python 基础知识

    Thomas Myer, 负责人, Triple Dog Dare Media 简介: 您是一名经验丰富的 PHP 开发人员,并且希望学习 Python 吗?本文将从 PHP 开发人员的角度来探索 P ...

  5. 线程概念( 线程的特点,进程与线程的关系, 线程和python理论知识,线程的创建)

    参考博客: https://www.cnblogs.com/xiao987334176/p/9041318.html 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运 ...

  6. python 全栈开发,Day41(线程概念,线程的特点,进程和线程的关系,线程和python 理论知识,线程的创建)

    昨日内容回顾 队列 队列 : 先进先出.数据进程安全 队列实现方式: 管道 + 锁 生产者消费者模型 : 解决数据供需不平衡 管道 双向通信 数据进程不安全 EOFError: 管道是由操作系统进行引 ...

  7. python基础知识小结-运维笔记

    接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:1)避免‘\n’等特殊字符的两种方式: a)利用转义字符‘\’ b)利用原始字符‘r’ print r'c:\now' ...

  8. python基础知识-12-模块的了解

    python其他知识目录 1.模块介绍: Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句.模块让你能够有逻辑地组织你 ...

  9. Python基础知识-09-函数

    python其他知识目录 1.函数介绍 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如pr ...

随机推荐

  1. Java多线程之synchronized和volatile

    概述 用Java来开发多线程程序变得越来越常见,虽然Java提供了并发包来简化多线程程序的编写,但是我们有必要深入研究一下,才能更好的掌握这块知识. 本文主要对Java提供的底层原语synchroni ...

  2. Spark学习之路 (二)Spark2.3 HA集群的分布式安装[转]

    下载Spark安装包 从官网下载 http://spark.apache.org/downloads.html 从微软的镜像站下载 http://mirrors.hust.edu.cn/apache/ ...

  3. javaWeb快速入门+——初体验-HelloWorld

    文章转载自 https://www.cnblogs.com/1906859953Lucas/p/10821840.html 练习成品下载 https://www.lanzous.com/i9fljkj ...

  4. Codeforces Round #623 (Div. 2) D.Recommendations 并查集

    ABC实在是没什么好说的,但是D题真的太妙了,详细的说一下吧 首先思路是对于a相等的分类,假设有n个,则肯定要把n-1个都增加,因为a都是相等的,所以肯定是增加t小的分类,也就是说每次都能处理一个分类 ...

  5. Vue中常见参数传递方式

    文章内容:这里只有vue中父子组件传参.路由间的传参 (另外还有vuex.储存本地.中央bus等方式) 一.父子组件 1.1父传子(props) <!-- 父组件father.vue --> ...

  6. 获取mybaties插入记录自动增长的主键值

    首先在Mybatis Mapper文件中insert语句中添加属性“useGeneratedKeys”和“keyProperty”,其中keyProperty是保存主键值的属性. 例如: <in ...

  7. python3练习100题——035

    原题链接:http://www.runoob.com/python/python-exercise-example34.html 题目:文本颜色设置. 学习了一下python3 的文本颜色设置. 其实 ...

  8. 风变编程笔记(二)-Python爬虫精进

    第0关  认识爬虫 1. 浏览器的工作原理首先,我们在浏览器输入网址(也可以叫URL),然后浏览器向服务器传达了我们想访问某个网页的需求,这个过程就叫做[请求]紧接着,服务器把你想要的网站数据发送给浏 ...

  9. eclipse 设置不弹出debug调试框

  10. FactoryBean的作用

    Spring 中有两种类型的Bean,一种是普通Bean,另一种是工厂Bean 即 FactoryBean.FactoryBean跟普通Bean不同,其返回的对象不是指定类的一个实例,而是该Facto ...