python自带的os模块提供了许多与操作系统交互的函数,适配多种操作系统,比如windows,mac,linux等,比如常用路径操作、进程管理、环境参数等都可通过os模块实现。
以下是自带的os.py中的前面一部分代码。
- 第一个红框中主要说明如下:
—— os.name为'posix'或'nt'
—— os.curdir是一个表示当前目录的字符串(总是'.')
—— os.pardir是一个表示父目录的字符串(总是'..')
—— os.sep是路径分隔符('/'或'\\')
—— os.extsep是扩展分隔符(总是'.')
—— os.altsep是备用路径名分隔符(None或'/')
—— os.pathsep是$PATH等中使用的组件分隔符
—— os.linesep是文本文件中的行分隔符('\r'或'\n'或'\r\n')
—— os.defpath为可执行文件的默认搜索路径
—— os.devnull为空设备的文件路径('/dev/null'等)
其中os.name意味着操作系统类型,'posix'指的是类Unix操作系统,如Linux和Mac OS,而'nt'则指的是Windows。
- 第二个红框是当通过from os import *导入时只导入__all__中包括的功能。
目录操作
os.getcwd()获取当前程序文件所在目录
print(os.getcwd())
os.mkdir()创建目录
用于新建文件夹,当文件夹存在时会报错,而且不能创建多层目录
在mac桌面上创建目录1,执行成功
os.mkdir('/Users/htsc/Desktop/dir1')
但如果想创建多层目录,比如在dir1下接着创建dir2,然后在dir2下创建dir3,此时会报错。
os.mkdir('/Users/htsc/Desktop/dir1/dir2/dir3')
os.makedirs()创建多层目录
用于新建文件夹,当文件夹存在时会报错,能创建多层目录
os.makedirs('/Users/htsc/Desktop/dir1/dir2/dir3')
os.rmdir()删除空目录
以下执行会删除最后一层dir3目录,但是dir3目录如果不为空,则会报错。
os.rmdir('/Users/htsc/Desktop/dir1/dir2/dir3')
os.removedirs()递归删除多层空目录
以下执行会依次删除dir3/dir2/dir1目录,但是某个目录如果不为空,则会报错。
os.removedirs('/Users/htsc/Desktop/dir1/dir2/dir3')
如果想删除非空目录,可以使用shutil.rmtree()函数
import shutil
shutil.rmtree("/Users/htsc/Desktop/dir1/dir2/dir3'")
os.chdir()改变当前目录。
print(os.getcwd())
os.chdir("/Users/htsc")
print(os.getcwd())
结果:当前目录被修改
/Users/htsc/Desktop
/Users/htsc
os.rename(src, dst):重命名一个目录或文件。
os.rename('/Users/htsc/Desktop/dir1/dir2','/Users/htsc/Desktop/dir1/dir4')
os.listdir(path):列出指定目录下的所有文件和子目录。listdir()返回的是list列表
print(os.listdir(path='/Users/htsc/Desktop'))
os.scandir(path):列出指定目录下的所有文件和子目录。scandir()返回的是迭代器,而不是list列表
for entry in os.scandir('/Users/htsc/Desktop/dir1'):
print(entry.name) # 打印文件名
print(entry.path) # 打印文件的完整路径
print(entry.is_dir()) # 判断是否是目录
print(entry.is_file()) # 判断是否是文件
os.stat(path):获取文件或目录的状态。
print(os.stat('/Users/htsc/Desktop'))
打印结果:
os.stat_result(st_mode=16832, st_ino=245263, st_dev=16777234,
st_nlink=15, st_uid=501, st_gid=20, st_size=480,
st_atime=1713104547,
st_mtime=1713104547, st_ctime=1713104547)
os.walk(path):递归地查找文件夹树,yield每个文件夹路径,所有的子文件夹名和所有的文件名。(返回一个生成器)
for path,sub_folder_names,file_names in os.walk('/Users/htsc/Desktop/dir1'):
print(path)
print(sub_folder_names)
print(file_names)
文件夹如果比较复杂打印看上去会很乱,大家可以依次打印或者找一个小层级的目录试下。
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的功劳。
----感谢读者的阅读和学习,谢谢大家。