【进阶02】【自学笔记】Python_ os库详解
总结了一些常见的 文件 和目录的操作。
os模块
import os
print '***获取当前目录***')
print os.getcwd()
print os.path.abspath(os.path.dirname(__file__))
print '***获取上级目录***'
print os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
print os.path.abspath(os.path.dirname(os.getcwd()))
print os.path.abspath(os.path.join(os.getcwd(), ".."))
print '***获取上上级目录***'
print os.path.abspath(os.path.join(os.getcwd(), "../.."))
1、创建目录
os.makedirs 可以递归的创建目录结构,比如
import os os.makedirs("./python/fileop",exist_ok=True)
当前工作目录下创建 python目录,在Python目录下面再创建fileop目录
exist_ok=True
指定了,如果某个要创建的目录已经存在,也不报错
2、删除文件或目录
删除文件
os.remove('sdf.py')
shutil.rmtree()递归删除目录下所有目录和子文件
import shutil shutil.rmtree('python', ignore_errors=True)
注意:参数 ignore_errors=True
保证如果目录不为空,不会抛出异常。
3、复制文件,复制目录
1)复制文件使用shutil模块的copyfile函数
# 拷贝 E:/xry/pyqt_lx/python基础/debug.log 到 E:/xry/pyqt_lx/python基础/debug1.log
from shutil import copyfile
copyfile('E:/xry/pyqt_lx/python基础/debug.log', 'E:/xry/pyqt_lx/python基础/debug1.log')
2)复制目录使用shutil模块的copytree函数
# 拷贝 E:/xry/pyqt_lx/python基础/ 目录中所有的内容 到E:/xry/pyqt_lx/python基础1/ 中 from shutil import copytree copytree('E:/xry/pyqt_lx/python基础/', 'E:/xry/pyqt_lx/python基础1/')
4、修改文件名,目录名
使用os模块的rename函数。
import os #修改目录名 os.rename("E:/xry/pyqt_lx/python基础1/","E:/xry/pyqt_lx/python目录/") #修改文件名 os.rename("E:/xry/pyqt_lx/python基础/迭代器.py","E:/xry/pyqt_lx/python基础/迭代器001.py")
5、文件路径名操作
文件所在目录,文件路径的拼接等,都可以使用 os.path 模块。
import os path = '/Users/beazley/Data/data.csv' #获取路径中的文件名部分 print(os.path.basename(path)) # 获取路径中的目录部分 print(os.path.dirname(path)) #文件路径的拼接 print(os.path.join('tmp', 'data', os.path.basename(path)))
6、判断文件、目录是否存在
1)判断一个指定路径的文件或者目录是否存在
import os res=os.path.exists('d:/systems/cmd.exe') res1=os.path.exists('E:/xry/pyqt_lx/python基础/') print(res) print(res1)
2)判断指定路径是否是文件
import os # 返回值为True 表示是文件 os.path.isfile('d:/systems/cmd.exe')
3)判断指定路径是否是目录
import os # 返回值为True 表示是目录 os.path.isdir('d:/systems')
7、获取当前工作目录
cwd = os.getcwd()
8、递归遍历目录下面所有的文件
1)使用 os库中的walk方法,将某个目录下面所有的子目录 和所有的文件,存放在两个列表中
import os #目标目录 tagetDir="E:/xry/pyqt_lx/python基础/" files=[] dirs=[] # 下面的三个变量 dirpath, dirnames, filenames # dirpath 代表当前遍历到的目录名 # dirnames 是列表对象,存放当前dirpath中的所有子目录名 # filenames 是列表对象,存放当前dirpath中的所有文件名 for (dirpath,dirnames,filenames) in os.walk(tagetDir): files += filenames dirs += dirnames print(files) print(dirs)
2)得到某个目录下所有文件的全路径
import os #目标目录 tagetDir="E:/xry/pyqt_lx/python基础/" files=[] dirs=[] # 下面的三个变量 dirpath, dirnames, filenames # dirpath 代表当前遍历到的目录名 # dirnames 是列表对象,存放当前dirpath中的所有子目录名 # filenames 是列表对象,存放当前dirpath中的所有文件名 for (dirpath, dirnames, filenames) in os.walk(tagetDir): for fn in filenames: # 把 dirpath 和 每个文件名拼接起来 就是全路径 fpath = os.path.join(dirpath, fn) print(fpath)
9、得到目录中所有的文件和子目录名
1)返回目录下所有的文件和子目录
import os #目标目录 tagetDir="E:/xry/pyqt_lx/python基础/" files = os.listdir(tagetDir) print(files)
2)返回目录中所有的文件
import os
from os.path import isfile, join,isdir
#目标目录
tagetDir="E:/xry/pyqt_lx/python基础/"
# 所有的文件
print([f for f in os.listdir(tagetDir) if isfile(join(tagetDir, f))])
# 所有的目录
print([f for f in os.listdir(targetDir) if isdir(join(targetDir, f))])
10、改变当前目录
1) 使用: os.chdir(path)。
比如, 如果当前目录在 ‘E:’ 下面, 然后进入E 下面的files 文件 可以使用 os.chdir(E:\files).
之后,使用比如 test1 = open('file1.txt'), 打开的文件会是在这个 ‘E:\files’ 目录下的文件,而不是 'E' 下的文件。
本文来自博客园,作者:橘子偏爱橙子,转载请注明原文链接:https://www.cnblogs.com/xfbk/p/15746244.html