【进阶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

浙公网安备 33010602011771号