Python之路(第十四篇)os模块
一、os模块
1、os.getcwd()
获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹)
import os
print(os.getcwd())
2、os.chdir(path)
改变当前工作目录,os.chdir()参数为路径
import os
print(os.getcwd())
print(os.chdir(r"d:\python\exercise\test_package\a"))
print(os.getcwd())
输出结果
D:\06python\exercise\test_package
None
d:\06python\exercise\test_package\a #可以看到工作的路径变了
3、os.curdir os.pardir
os.curdir 返回当前目录: ('.')os.pardir 获取当前目录的父目录字符串名:('..')
import os
print(os.curdir)
print(os.pardir)
输出结果
.
..
4、os.makedirs("dirname1/dirname2")
可生成多层递归目录
import os
os.makedirs(r"exercise\a\b\c")
输出结果
%E3%80%90day22%E3%80%91\os.makedirs.gif?lastModify=1525793752)

5、os.removedirs(”dirname1“)
递归删除文件夹 必须都是空目录,若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
import os
os.removedirs(r"exercise\a\b\c")
输出结果
%E3%80%90day22%E3%80%91\os.removedirs.gif?lastModify=1525793752)

6、os.mkdir('dirname')
生成单级目录;相当于shell中mkdir dirname
import os
os.mkdir("a")
输出结果
%E3%80%90day22%E3%80%91\os.mkdir.gif?lastModify=1525793752)

7、os.rmdir('dirname')
删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
import os
os.rmdir("a")
# os.rmdir("b")
输出结果
%E3%80%90day22%E3%80%91\os.rmdir.gif?lastModify=1525793752)

8、os.listdir('dirname')
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
import os
print(os.listdir("a"))
输出结果
%E3%80%90day22%E3%80%91\os.listdir.gif?lastModify=1525793752)

9、os.remove()
删除一个文件
import os
os.remove("a/x.py")
输出结果
%E3%80%90day22%E3%80%91\os.remove.gif?lastModify=1525793752)

10、os.rename("oldname","newname")
重命名文件/目录
linux平台下用os.rename(),os.rename不能直接在Windows平台下用,windows平台下用os.replace(),
import os
os.rename("test.py","new_test.py")
输出结果
%E3%80%90day22%E3%80%91\os.rename.gif?lastModify=1525793752)

11、os.stat('path/filename')
获取文件/目录信息
import os
print(os.stat("test.py"))
输出结果
%E3%80%90day22%E3%80%91\os.stat.gif?lastModify=1525793752)

st_mode: inode 保护模式
st_ino: inode 节点号。
st_dev: inode 驻留的设备。
st_nlink: inode 的链接数。
st_uid: 所有者的用户ID。
st_gid: 所有者的组ID。
st_size: 普通文件以字节为单位的大小;包含等待某些特殊文件的数据。
st_atime: 上次访问的时间。
st_mtime: 最后一次修改的时间。
st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在其它系统上(如Windows)是创建时间。
12、os.sep
输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
import os
print(os.sep)
输出结果
%E3%80%90day22%E3%80%91\os.sep.gif?lastModify=1525793752)

13、os.linesep
输出当前平台使用的行终止符,win下为"\r\n",Linux下为"\n"
%E3%80%90day22%E3%80%91\os.linesep%20.gif?lastModify=1525793752)

14、os.pathsep
输出用于分割文件路径的字符串 win下为;,Linux下为:
%E3%80%90day22%E3%80%91\os.pathsep%20.gif?lastModify=1525793752)

15、os.name
输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
%E3%80%90day22%E3%80%91\os.name.gif?lastModify=1525793752)

16、os.system("bash command") os.popen("bash command“)
os.system("bash command") 运行shell命令,直接显示
os.popen("bash command”) 运行shell命令,获取执行结果
17、os.environ
获取系统环境变量
18、os.path.abspath(path)
返回path规范化的绝对路径,包含文件名
import os
print(os.path.abspath(__file__))
输出结果
%E3%80%90day22%E3%80%91\os.path.abspath.gif?lastModify=1525793752)

19、os.path.split(path)
当path是文件的绝对路径时,将path分割成目录和文件名二元组返回
当path是一个文件目录的绝对路径时(类似“D:\06python\exercise\test_package”),os.path.split()将path分割成最后的一个文件夹为一部分,其他的前面为一部分
import os
print(os.path.split(__file__))
输出结果
%E3%80%90day22%E3%80%91\os.path.split.gif?lastModify=1525793752)

例子2
import os
print(os.path.split(r"D:\06python\exercise\test_package"))
输出结果
%E3%80%90day22%E3%80%91\os.path.split--2.gif?lastModify=1525793752)

20、os.path.dirname(path)
返回path的目录。其实就是os.path.split(path)的第一个元素。
参数path为文件时os.path.dirname()是获取文件的完整绝对路径中的目录部分(去掉文件名)
参数path为目录时os.path.dirname()获取完整路径当中的目录部分,获取上一级目录的绝对路径
os.path.dirname(os.path.dirname(path))是获取的返回该目录的上一级目录,即获取指定目录(os.path.dirname(path)的结果)的上一级目录的绝对路径
import os
print(os.path.abspath(__file__))
print(os.path.dirname(__file__))
print(os.path.dirname(os.path.dirname(__file__)))
输出结果

%E3%80%90day22%E3%80%91\os.path.dirname.gif?lastModify=1525793752)
分析:这里的输出结果后两个是斜杠,而第一个os.path.abspath输出的是win平台中常见的反斜杠,原因是pycharm做的优化
小实验


%E3%80%90day22%E3%80%91\os.path.dirname%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C%E4%BC%98%E5%8C%96%E8%AF%B4%E6%98%8E.gif?lastModify=1525793752)
从这个结果可以看出,直接使用python解释器的结果仍然是反斜杠
同样的文件在pycharm中执行,pycharm中输出的就是斜杠
%E3%80%90day22%E3%80%91\os.path.dirname%E5%A4%84%E7%90%86%E7%BB%93%E6%9E%9C%E4%BC%98%E5%8C%96%E8%AF%B4%E6%98%8E2.gif?lastModify=1525793752)
21、os.path.basename(path)
当参数path为文件的绝对路径时返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。
当参数path是一个文件目录的绝对路径时(类似“D:\06python\exercise\test_package”),返回的是最后一个文件夹的名字

%E3%80%90day22%E3%80%91\os.path.basename.gif?lastModify=1525793752)
22、os.path.exists(path)
判断文件或者目录存不存在,如果path存在,返回True;如果path不存在,返回False
%E3%80%90day22%E3%80%91\os.path.exists.gif?lastModify=1525793752)

23、os.path.isabs(path)
如果path是绝对路径,返回True
import os
print(os.path.isabs(r"D:\06python\exercise\test_package\test.py"))
print(os.path.isabs(r".\test_package\test.py"))
print(os.path.isabs(__file__))
v =os.path.isabs(r"D:\06python\exercise\test_package")
print(v)
print(type(v))
输出结果
%E3%80%90day22%E3%80%91\os.path.isabs.gif?lastModify=1525793752)

分析:这里即使是不存在的绝对路径也会返回True
24、os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False
import os
print(os.path.isfile(r"D:\06python\exercise\test_package\test.py"))
print(os.path.isfile(r"D:\06python\exercise\test_package\t.py"))
v =os.path.isfile(r"D:\06python\exercise\test_package")
print(v)
print(type(v))
输出结果
%E3%80%90day22%E3%80%91\os.path.isfile.gif?lastModify=1525793752)

25、os.path.isdir(path)
如果path是一个存在的目录,则返回True。否则返回False

%E3%80%90day22%E3%80%91\os.path.isdir.gif?lastModify=1525793752)
26、os.path.join(path1[, path2[, ...]])
将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
import os
print(os.path.join(r"D:\06python\exercise",r"test_package\test.py"))
print(os.path.join(r"D:\06python\exercise",r"test_package\t.py")) #不存在的路径也能合成
print(os.path.join(r"D:\06python\exercise",r"/test_package\t.py"))
"""如果第二个参数存在斜杠或者反斜杠,之前的参数会被忽略即第一个绝对路径之前的参数将被忽略"""
print(os.path.join(r"D:\06python\exercise","test_package"))
输出结果
%E3%80%90day22%E3%80%91\os.path.join.gif?lastModify=1525793752)

27、os.path.getatime(path)os.path.getmtime(path)
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
import os
print(os.path.getatime(__file__)) # 返回path所指向的文件或者目录的最后存取时间
print(os.path.getmtime(__file__)) # 返回path所指向的文件或者目录的最后修改时间
print(os.path.getatime(r"D:\06python\exercise\test_package"))
print(os.path.getmtime(r"D:\06python\exercise\test_package"))
输出结果
%E3%80%90day22%E3%80%91\os.path.getatime(path)os.path.getmtime(path).gif?lastModify=1525793752)

28、os.path.getsize(path)
返回path(文件或者目录下的所有文件)的大小
import os
print(os.path.getsize(__file__))
print(os.path.getsize(r"D:\06python\exercise\test_package"))
输出结果

Python之路(第十四篇)os模块的更多相关文章
- Python之路(第二十四篇) 面向对象初级:多态、封装
一.多态 多态 多态:一类事物有多种形态,同一种事物的多种形态,动物分为鸡类,猪类.狗类 例子 import abc class H2o(metaclass=abc.ABCMeta): def _ ...
- Python之路(第十九篇)hashlib模块
一.hashlib模块 HASH Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值 ...
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- Python之路(第十八篇)shutil 模块、zipfile模块、configparser模块
一.shutil 模块 1.shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中,需要打开文件 import shutil shutil.co ...
- Python之路(第十六篇)xml模块、datetime模块
一.xml模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单, xml比较早,早期许多软件都是用xml,至今很多传统公司如金融行业的很多系统的接口还主要 ...
- Python学习【第十二篇】模块(2)
序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...
- 第十二篇 os模块
Python的os模块提供了系统相关,目录,文件操作,执行命令等操作. 1.文件和目录操作相关的方法: 方法 说明 os.mkdir 创建目录 os.rmdir 删除目录 os.rename 重命名 ...
- Python之路【第四篇】: 函数、递归、内置函数
一. 背景提要 现在老板让你写一个监控程序,监控服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码 while True: i ...
- Python之路【第四篇】:模块
什么是模块: 模块就是一个功能的集合. 模块就和乐高积木差不多,你用这些模块组合出一个模型,然后也可以用这个模块加上其他的模块组合成一个新的模型 模块的种类: 1.内置模块(python自带的比如os ...
随机推荐
- 开启swap交换分区
开启swap 1.创建用于交换分区的文件: dd if=/dev/zero of=/mnt/swap bs=1M count=2048 注:block_size.number_of_block 大小可 ...
- linux shell 学习笔记01
1.命令历史记录history !$ :调用上一条命令的执行结果 !100 :运行history记录里的第100条命令 !ser :调用以ser开头的最后一次执行的命令 ctrl+r ...
- Android学习路-Android Studio的工程目录
说明:下图为一个app的工程目录,如果在res下随便建立文件夹(比如test等名字)是不会显示在工程内的
- Windows Server2012 R2 安装.NET Framework 3.5失败解决方法
转载:https://blog.csdn.net/F12138_/article/details/80220698 显示需要指定备用路径,但我没有指定 然后就出现了的失败T T! 由于我无法访问安装盘 ...
- python--第二天总结
一.作用域只要变量在内存中存在,则就可以使用.(栈) 二.三元运算result = 值result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为假:result ...
- AtCoder Regular Contest 096 D - Static Sushi(线性dp)
Problem Statement "Teishi-zushi", a Japanese restaurant, is a plain restaurant with only o ...
- 8.14 git??sourceTree??
目前这个项目是四个前端在做,我用的版本控制工具是sourceTree,有两个人用的是命令行,厉害.(刚哥说,肯定要会命令行的,(⊙o⊙)好,我学!!) 上周五提交代码时,文件冲突了,而且我给1.3版本 ...
- CQ3
super.bark(); 不要第一个括号 Write a concrete meow( ) method 抽象类实例化后要加一个实例化的方法. 抽象类里可以没有抽象方法. What does ...
- spring boot项目打包成war并在tomcat上运行的步骤
把spring-boot项目按照平常的web项目一样发布到tomcat容器下 一.修改打包形式 在pom.xml里设置 <packaging>war</packaging> 二 ...
- JS编程题练习
JS编程题练习 1. 两个数组合并成一个数组排序返回 先依次比较两个数组,按照小的就传入新的数组.当这次比较完之后可能有一个数组的长度很长,留下一些数组,然后在新数组的末尾插入即可. function ...