用于提供系统级别的操作

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. 8 -- 深入使用Spring -- 5...3 使用@CacheEvict清除缓存

    8.5.3 使用@CacheEvict清除缓存 被@CacheEvict注解修饰的方法可用于清除缓存,使用@CacheEvict注解时可指定如下属性: ⊙ value : 必须属性.用于指定该方法用于 ...

  2. 大杂烩 -- ArrayList的动态增长 源码分析

    基础大杂烩 -- 目录 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 问题:当ArrayList中放入的元素一直增加会如 ...

  3. THINKPHP5 volist标签循环不能设置循环变量为$i

    在thinkphp5的volist标签中不要用$i作为id,举个简单例子 控制器这样写 模板这样写 结果是 这很令人费解啊.然后换一个循环变量看看 循环正常了,看来这个id这里设置循环变量的时候 不能 ...

  4. 嵌入式Linux应用开发__求职要求

    A.熟悉嵌入式软件开发,有较好的C语言开发能力,熟悉Linux线程,信号量,同步,消息队列,网络编程,音频等:B.能够熟练使用GDB调试工具:C.熟悉linux脚本,对于Android编译环境有一定理 ...

  5. js for in 获得遍历数组索引和对象属性

    for in 遍历对象属性 获取的是对象的属性名 var person ={ name:"admin", age:"21", address:"sha ...

  6. NHibernate中Session的处理 线程不安全

    NHibernate中Session是线程不安全的,而且每次数据库操作 请求创建Session时对性能有些影响.在Windows应用中可以通过 [ThreadStatic]特性很简单的就可以实现线程安 ...

  7. Pthon Matplotlib 画图

    一.普通绘图 import matplotlib.pyplot as plt import numpy as np # 绘制普通图像 x = np.linspace(-1, 1, 50) y1 = 2 ...

  8. day_6.17 gevent版服务器

    用协程做并发服务器   gevent版本: monkey.patch_all() 修改了自己的代码 只能用mokey里面的代码 #!--*coding=utf-8*-- #2018-6-17 12:0 ...

  9. 移动端H5混合开发设置复盘与总结

    此篇接上一篇: 移动端H5混合开发,Touch触控,拖拽,长按, 滑屏 实现方案 https://www.cnblogs.com/buoge/p/9346699.html app 场布设置已经上线了, ...

  10. WPF 依赖属性和附加属性

    依赖属性: 依赖属性就是自己没有值,通过Binding从数据源获得值,就是依赖在别人身上,拥有依赖属性的对象称为依赖对象. 依赖属性的值存在哪里? 在WPF运行时,维护了一个全局的Hashtable存 ...