Python os、shutil模块与os.path方法在开发过程中常用到的方法

143 阅读2分钟

os模块

import os
res = os.listdir(r'绝对路径')        # 获取该文件下的子文件夹名
res1 = os.listdir(r'.')                 # 获取当前文件夹下的所有子文件以及子文件夹的名字
print(res)
print(res1)
size = os.path.getsize(r'绝对路径')         # 统计一个文件的大小
print(size)

os.system(r'dir ')    # 应用程序向操作系统发出命令,()内的参数为命令(不同操作系统对于同一指令命令可能是不同的)
print(os.environ)           
# 以字典形式返回系统环境变量  其中key与value必须都为字符串 也可以加os.environ()key和value,让所有文件都可以使用

os.path

import os
print(os.path.abspath(__file__))     
# 返回当前文件的绝对路径   abspath的用处是正确显示出当前操作系统所对应的分隔符,如wihndows为\\

res = os.path.split(r'绝对路径')      # split会返回一个元组,一个元素是文件夹路径,一个元素是文件名
print(res)                         
print(os.path.dirname(r"绝对路径"))      
# dirname返回当前文件所在文件夹路径

print(os.path.basename(r'绝对路径'))     
# basename返回当前文件的名字
# 可以观察出split方法即为(dirname,basename)

print(os.path.isfile(r'绝对路径'))      
# 判断该绝对路径是否指的是文件,返回True或Flase

os.path.isdir()         # 判断该绝对路径是否指的是文件夹
print(os.path.normpath(r'绝对路径\..\..') )      
# 绝对路径后加几个'\..'就返回上几级目录

一个开发应用重点:获取当前文件所在根目录

BASE_DIR = os.path.dirname(os.path.dirname(__file__))   # 此方法应用即为广泛          
print(__file__)         # __file__即为当前文件的绝对路径
print(BASE_DIR)

在python3.5以后,还可以利用path方法获取当前文件根目录,有兴趣的朋友可以自行去了解一下

shutil模块

shutil可以简单地理解为sh + util,shell工具的意思

shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作

import shutil
shutil.copyfileobj(open('old.xml', 'r'), open('nex.xml', 'w'))  # 将原文件内容拷贝到目标文件
shutil.copyfile('f1.log', 'f2.log')             # 拷贝文件内容(目标文件无需存在)
shutil.copy('f1.log', 'f2.log')         # 拷贝原文件内容及其权限
shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('a.txt', 'b.py', '*.pyc', 'tmp*'))# 递归的拷贝文件夹,目标目录不能不存在
# ignore后跟不要的文件   以.pyc结尾的文件    以tmp开头的文件

方法往往实践后才能更好的理解与记忆,学习需求与此文章内容有重合的朋友建议可以选择将代码复制到开发工具里运行一下,看看输出结果,印象会更深 不正之处,欢迎各位批判指正