用于提供系统级别的操作

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. Tensorflow读写TFRecords文件

    在使用slim之类的tensorflow自带框架的时候一般默认的数据格式就是TFRecords,在训练的时候使用TFRecords中数据的流程如下:使用input pipeline读取tfrecord ...

  2. 使用 ssh -R 穿透局域网访问内部服务器主机,反向代理 无人值守化

    一.搭建SSH方向代理 准备: 局域网主机(虚拟主机): 192.168.6.233   CentOS 6.7 阿里云服务器:120.25.68.60   CentOS 6.7 1. 阿里云服务器12 ...

  3. Kafka Java API获取非compacted topic总消息数

    目前Kafka并没有提供直接的工具来帮助我们获取某个topic的当前总消息数,需要我们自行写程序来实现.下列代码可以实现这一功能,特此记录一下: /** * 获取某个topic的当前消息数 * Jav ...

  4. C# 根据类名创建类的实例对象

    因为我使用这个方法的类都是和AbstractScenePageDTO处于一个命名空间以及程序集下的,所以获取命名空间和程序集的时候,直接使用AbstractScenePageDTO这个类进行获取,这样 ...

  5. fs项目---->migrate-mongo的使用(一)

    tw项目中用的是mongo数据库,数据的迁移也是需求的一部分.这时我们可以使用migrate-mongo在nodejs中方便的进行数据的迁移,以下记录一下使用的过程. 一.migrate-mongo的 ...

  6. PHP针对中英文混合字符串长度判断及截取方法

    PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = 'Hello,China!'; echo str ...

  7. spring框架的ioc

       spring框架,主要思想可以用spring容器来理解 aop是一种对oop进行补充的软件设计思想,将和核心功能不相关代码抽象出来,由其他类完成.比如Singer类,我们可以定义一个Singer ...

  8. MSDN2001 快捷方式丢失的处理方法

    1.  C:\Windows\hh.exe,右键 - 发送快捷方式到桌面 2. 给快捷方式改名为:MSDN2001 3. 右键快捷方式 - 属性- 快捷方式选项卡中的目标填写: C:\Windows\ ...

  9. dts中memreserve和reserved-memory的区别 (转)

    https://blog.csdn.net/kickxxx/article/details/54631535

  10. [No0000B2]ReSharper操作指南3/16-配置ReSharper与代码校错

    配置ReSharper ReSharper功能具有默认配置,这些配置基于.NET世界中的约定和最佳实践.但是,每个功能都可以根据您的需求和喜好灵活调整. ReSharper首选项可以在以下位置进行配置 ...