针对“Python关于OS文件目录处理的实例分享”的完整攻略,以下是详细的讲解:
在Python编程中,通过OS模块能够轻松处理文件和目录,而且可以跨平台使用。本攻略主要介绍如何使用Python的OS模块来处理文件和目录。
Python的OS模块可以访问操作系统文件系统。该模块提供了大量的函数用于与操作系统交互操作。下面是一些常用的OS函数:
os.path模块是os模块的一部分,用于处理文件路径。通过os.path模块,能够获得文件和目录的相关信息。
可以使用以下函数获取文件的基本信息:
os.path.basename(path)
: 返回path最后一部分,如'file.txt'。例如:
import os
# 获取文件名
print(os.path.basename('/usr/local/bin/python')) # python
可以使用以下函数获取目录的基本信息:
os.path.dirname(path)
: 返回path除文件名外的路径部分,如'/usr/local/bin'。例如:
import os
# 获取目录名
print(os.path.dirname('/usr/local/bin/python')) # /usr/local/bin
os.path.exists(path)
: 如果path存在,返回True,否则返回False。import os
# 检查文件是否存在
print(os.path.exists('/usr/local/bin/python')) # True
# 检查目录是否存在
print(os.path.exists('/usr/local/bin/')) # True
os.path.join(path1[, path2[, ...]])
: 将多个路径组合后返回。其中,第一个绝对路径之前的参数将被忽略。空参数将被忽略。如果最后一个参数不为空,则结果里面也会以该参数为结尾。os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
: 生成目录树下所有的文件名和目录名。参数top表示根目录,topdown表示是否从根目录开始遍历,onerror表示出现异常时处理方式,followlinks表示是否跟随符号链接。该函数返回一个迭代器,可以使用for语句遍历该迭代器。例如:
import os
# 遍历目录下所有文件和目录
for root, dirs, files in os.walk('/usr'):
print(root) # 当前目录的路径
print(dirs) # 当前目录下的所有目录名
print(files) # 当前目录下的所有文件名
下面是一些常用的文件和目录操作相关的函数:
可以使用以下函数创建目录:
os.mkdir(path[, mode])
: 创建单级目录。如果该目录已经存在则抛出异常。os.makedirs(path[, mode])
: 创建多级目录。如果该目录已经存在则抛出异常。例如:
import os
# 创建单级目录
os.mkdir('/usr/local/tmp')
# 创建多级目录
os.makedirs('/usr/local/tmp/1')
可以使用以下函数删除目录:
os.rmdir(path)
: 删除单级空目录。如果目录非空,则抛出异常。os.removedirs(path)
: 删除多级空目录。如果目录非空,则抛出异常。例如:
import os
# 删除单级空目录
os.rmdir('/usr/local/tmp/1')
# 删除多级空目录
os.removedirs('/usr/local/tmp')
可以使用以下函数创建文件:
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)
: 打开文件,并返回文件对象。file为文件名,mode用于打开文件的模式,各模式如下:模式 | 说明 |
---|---|
'r' | 读取(默认) |
'w' | 写入,文件不存在则创建文件,如果文件已经存在,先清空文件内容再写入 |
'x' | 排它性创建,如果文件已经存在则抛出异常 |
'a' | 追加写入,如果文件不存在则创建文件 |
'b' | 二进制模式 |
't' | 文本模式(默认) |
'+' | 读写模式 |
例如:
# 创建文件,并写入内容
with open('test.txt', mode='w') as f:
f.write('Hello World\n')
可以使用以下函数删除文件:
os.remove(file)
: 删除文件。例如:
import os
# 删除文件
os.remove('test.txt')
来看一个实际的例子,读取某个目录下的所有文件:
import os
# 遍历目录下所有文件
def list_files(path):
for root, dirs, files in os.walk(path):
for file in files:
filepath = os.path.join(root, file)
print(filepath)
list_files('/usr/local')
输出结果:
/usr/local/bin/python3
/usr/local/bin/python3-config
/usr/local/bin/python3.8
/usr/local/bin/python3.8-config
/usr/local/bin/python3.8-coverage
/usr/local/bin/python3.8-dbg
/usr/local/bin/python3.8-gdb.py
/usr/local/bin/python3.8-tk
...
再来一个实际的例子,遍历指定目录下的所有子目录:
import os
# 遍历指定目录下的所有子目录
def list_dirs(path):
for root, dirs, files in os.walk(path):
for dir in dirs:
dirpath = os.path.join(root, dir)
print(dirpath)
list_dirs('/usr/local')
输出结果:
/usr/local/include
/usr/local/share
/usr/local/var
/usr/local/sbin
/usr/local/libexec
/usr/local/lib
/usr/local/etc
/usr/local/Cellar
/usr/local/opt
/usr/local/var/db
/usr/local/var/run
通过该攻略,相信读者对Python中OS文件目录处理有了更具智能化思路的认识,实际应用中可以通过代码示例来更快更好的掌握该模块。
本文链接:http://task.lmcjl.com/news/15152.html