用于提供系统级别的操作

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
os.pathsep 输出用于分割文件路径的字符串,win下为";",Linux下为":"
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
os.path.getsize(path) 返回path所指向的文件或者目录的的大小,相当于os.stat(path).st_size
os.walk(path) 文件、目录遍历器,具体用法见下方

更多点击这里

代码示例:

import os
print(os.getcwd()) # 获取当前工作目录,D:\python-study\s14\Day05
os.chdir('D:\python-study\s14') #改变当前工作目录
print(os.getcwd())
print(os.curdir) #返回当前目录.
print(os.pardir) #返回当前目录的父目录..
#os.makedirs(r'D:\a\b\c\d') #生成多级目录
#os.makedirs('D:\\1\\2\\3\\4') #同上
#os.removedirs(r'D:\a\b\c\d') #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
#os.mkdir(r'D:\dir1') #生成单层空目录dir1
#os.mkdir(r'D:\dir1\dir2') #生成单层空目录dir2
#os.rmdir(r'D:\dir1\dir2') #删除单层空目录dir2
#print(os.listdir('.')) #返回当前目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
#print(os.listdir('..'))
#print(os.listdir('D:\python-study')) #os.remove(r'D:\text.txt') #删除文件
#os.rename('D:\dir1','D:\dir') #重命名文件/目录
print(os.stat(r'D:\dir')) # 获取文件/目录信息
#print(os.sep) #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
print(os.linesep) #输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
print(os.pathsep) #输出用于分割文件路径的字符串,win下为";",Linux下为":"
print(os.name) #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
#os.system("dir") #运行shell命令,直接显示
#os.system("ipconfig")
#rint(os.environ) #获取系统环境变量 print(os.path.abspath('Day05')) #D:\python-study\s14\Day05
print(os.path.split('D:/python-study/s14/Day05') ) #('D:/python-study/s14', 'Day05')
print(os.path.dirname('D:/python-study/s14/Day05')) #D:/python-study/s14
print(os.path.basename('D:/python-study/s14/Day05') ) #Day05
print(os.path.exists('D:/python-study/s14/Day05')) #True
print(os.path.isabs('D:/python-study/s14/Day05')) #True
print(os.path.isfile('D:/test.txt')) #True
print(os.path.isdir('D:')) #True
print(os.path.join(r'D:','a','b','c','text.txt')) # D:a\b\c\text.txt
print(os.path.getatime('D:/test.txt')) #1529997816.2916248
print(os.path.getmtime('D:/test.txt')) #1529997816.2916248
####1.解释
####os.walk(path),其中的path是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files):
####root 所指的是当前正在遍历的这个文件夹的本身的地址
####dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
####files 同样是 list ,内容是该文件夹中所有的文件(不包括子目录)
####具体参见:http://www.runoob.com/python/os-walk.html ####2.示例代码
import os
for root, dirs, files in os.walk(r'F:\test'):
for name in files:
print(os.path.join(root, name))
for name in dirs:
print(os.path.join(root, name)) ####3.输出结果
####F:\test\111.txt
####F:\test\hello
####F:\test\python
####F:\test\hello\333.txt
####F:\test\python\222.txt

os.walk()

import os

print(os.path.getsize(r'F:\test\aaa.txt')) #返回文件本身的大小
print(os.stat(r'F:\test\aaa.txt').st_size) #同上 print(os.path.getsize(r'F:\test')) #返回目录本身的大小,Windows新建文件夹大小为0,Linux中每个目录占用4096bytes
print(os.stat(r'F:\test').st_size) #同上 print(os.path.getsize(r'D:\python-study')) #8192,存疑:windows目录貌似都不一样大?是如何计算的?不懂

返回文件或目录的大小

注意:以下是我踩过的坑~

import os
a = os.path.isfile('D:\python-study\s14\Day08\ftp\ftp_client\temp\test.txt')
b = os.path.isdir('D:\python-study\s14\Day08\ftp\ftp_client\temp')
print(a,b) # 输出:False False

如上代码,明明这2个文件都是存在的,为什么输出就是False呢?这个我想了很久,后来发现是由于绝对路径中存在特殊的字符:反斜杠。
大家知道,反斜杠+某些字母会构成转义字符,比如常见的、\n(换行)、\r(回车),以及上面代码中出现的\f(换页)、\t(水平制表)等。
上面代码中,Python解释器不清楚\f和\t究竟代表的是 非转义的原始字符串 还是 转义字符,所以会得出错误的结果。
所以,我们可以在有特殊字符的字符串前面加上r/R,告诉Python解释器 后面的字符串均是非转义的原始字符串,这样就不会搞错了。

import os
a = os.path.isfile(r'D:\python-study\s14\Day08\ftp\ftp_client\temp\test.txt')
b = os.path.isdir(r'D:\python-study\s14\Day08\ftp\ftp_client\temp')
print(a,b) # 输出:True True

Python3学习之路~5.4 os模块的更多相关文章

  1. Python3学习之路~9.1 paramiko模块:实现ssh执行命令以及传输文件

    我们一般使用linux的时候,都是在Windows上安装一个ssh客户端连接上去.那么从一台linux如何连接到另一条linux呢?使用ssh命令即可,因为每台linux机器自己都有一个ssh客户端. ...

  2. Python3学习之路~5.5 sys模块

    用于提供对解释器相关的操作 sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序 ...

  3. Python3学习之路~5.3 random模块

    random模块常用方法: import random # 随机数 print(random.random()) # 生成一个0到1的随机浮点数,0 <= n < 1.0 print(ra ...

  4. Python3学习之路~5.13 re模块 正则表达式

    re模块用于对python的正则表达式的操作. 常用正则表达式符号 字符数字: . 匹配除换行符以外的任意字符,即[^\n] \s 匹配任意空白符(如\t.\n.\r ) \S 匹配任意非空白符 \w ...

  5. Python3学习之路~5.11 configparser模块

    用于生成和修改常见配置文档,当前模块的名称在 python 2.x 版本中为 ConfigParser, python 3.x 版本中变更为 configparser. 来看一个好多软件的常见文档格式 ...

  6. Python3学习之路~5.10 PyYAML模块

    Python也可以很容易的处理ymal文档格式,只不过需要安装一个模块,参考文档:http://pyyaml.org/wiki/PyYAMLDocumentation

  7. Python3学习之路~5.8 shelve模块

    shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 import shelve import datetime name = [& ...

  8. Python3学习之路~0 目录

    目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...

  9. Python3学习之路~5.1 模块介绍

    1 定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑:实现一个功能),本质上就是.py结尾的Python文件(文件名:test.py对应的模块名:test). 2 导入方法 impo ...

随机推荐

  1. SpringBoot Logback配置,SpringBoot日志配置

    SpringBoot Logback配置,SpringBoot日志配置  SpringBoot springProfile属性配置 ================================ © ...

  2. ElasticSearch(一)-- 简介

    ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticsearch是用Java开发的,并作为Apach ...

  3. OpenGL——折线图柱状图饼图绘制

    折线图绘制代码: #include<iostream> //旧版本 固定管线 #include<Windows.h> #include <GL/glut.h> // ...

  4. 【Vue】---编写Vue插件流程---【巷子】

    一.在Vue中编写插件流程 1.创建组件 components/message.vue <template> <div class="message" v-if= ...

  5. jexus手动跨域设置

    AP.NET MVC默认跨域方法如下: <system.webServer> <validation validateIntegratedModeConfiguration=&quo ...

  6. autofac生命周期入门(如何避免内存泄漏)

    如果你是一个IOC新手,那么生命周期可能会比较难以理解.以至于谈到这个问题时,一些老手也时常表示疑虑和害怕.一个令人不安的问题就是-对象没有在合适的时机被销毁.这样一来内存的使用率就会一直攀升,直到程 ...

  7. POJ 2513 - Colored Sticks - [欧拉路][图的连通性][字典树]

    题目链接: http://poj.org/problem?id=2513 http://bailian.openjudge.cn/practice/2513?lang=en_US Time Limit ...

  8. HTML5:表单提交

    不加CSS.JavaScrips的HTML表单提交简单代码 <!DOCTYPE html> <html lang="en"> <head> &l ...

  9. python selenium配置

    写该博客时环境 mac 10.14.1 (18B75) python 3.7 pip (不用这个就是了,用pip3) $ pip --version pip 10.0.1 from /Users/wj ...

  10. OC变量限定符和属性限定符

    ARC当中变量的四种生命周期限定符 __strong __weak __unsafe_unretained __autoreleaseing __strong 是默认的限定符,无需显示引入,只要有强引 ...