Fork me on GitHub

【进阶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' 下的文件。

  

posted @ 2021-12-30 11:04  橘子偏爱橙子  阅读(63)  评论(0编辑  收藏  举报