一, 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")
输出结果
5,os.removedirs("dirname1")
递归删除文件夹 必须都是空目录, 若目录为空, 则删除, 并递归到上一级目录, 如若也为空, 则删除, 依此类推
- import os
- os.removedirs(r"exercise\a\b\c")
输出结果
6,os.mkdir('dirname')
生成单级目录; 相当于 shell 中 mkdir dirname
- import os
- os.mkdir("a")
输出结果
7,os.rmdir('dirname')
删除单级空目录, 若目录不为空则无法删除, 报错; 相当于 shell 中 rmdir dirname
- import os
- os.rmdir("a")
- # os.rmdir("b")
输出结果
8,os.listdir('dirname')
列出指定目录下的所有文件和子目录, 包括隐藏文件, 并以列表方式打印
- import os
- print(os.listdir("a"))
输出结果
9,os.remove()
删除一个文件
- import os
- os.remove("a/x.py")
输出结果
10,os.rename("oldname","newname")
重命名文件 / 目录
linux 平台下用 os.rename(),os.rename 不能直接在 Windows 平台下用, windows 平台下用 os.replace(),
- import os
- os.rename("test.py","new_test.py")
输出结果
11,os.stat('path/filename')
获取文件 / 目录信息
- import os
- print(os.stat("test.py"))
输出结果
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)
输出结果
13,os.linesep
输出当前平台使用的行终止符, win 下为 "\r\n",Linux 下为 "\n"
14,os.pathsep
输出用于分割文件路径的字符串 win 下为;,Linux 下为:
15,os.name
输出字符串指示当前使用平台. win->'nt'; Linux->'posix'
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__))
输出结果
19,os.path.split(path)
当 path 是文件的绝对路径时, 将 path 分割成目录和文件名二元组返回
当 path 是一个文件目录的绝对路径时 (类似 "D:\06python\exercise\test_package"),os.path.split() 将 path 分割成最后的一个文件夹为一部分, 其他的前面为一部分
- import os
- print(os.path.split(__file__))
输出结果
例子 2
- import os
- print(os.path.split(r"D:\06python\exercise\test_package"))
输出结果
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__)))
输出结果
分析: 这里的输出结果后两个是斜杠, 而第一个 os.path.abspath 输出的是 win 平台中常见的反斜杠, 原因是 pycharm 做的优化
小实验
从这个结果可以看出, 直接使用 python 解释器的结果仍然是反斜杠
同样的文件在 pycharm 中执行, pycharm 中输出的就是斜杠
21,os.path.basename(path)
当参数 path 为文件的绝对路径时返回 path 最后的文件名. 如何 path 以 / 或 \ 结尾, 那么就会返回空值. 即 os.path.split(path)的第二个元素.
当参数 path 是一个文件目录的绝对路径时(类似 "D:\06python\exercise\test_package"), 返回的是最后一个文件夹的名字
22,os.path.exists(path)
判断文件或者目录存不存在, 如果 path 存在, 返回 True; 如果 path 不存在, 返回 False
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))
输出结果
分析: 这里即使是不存在的绝对路径也会返回 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))
输出结果
25,os.path.isdir(path)
如果 path 是一个存在的目录, 则返回 True. 否则返回 False
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"))
输出结果
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"))
输出结果
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 模块
来源: http://www.bubuko.com/infodetail-2593097.html