文章目录
- 简介
- 函数
- 输出文件夹中的文件名:os.walk()
- 路径拼接函数:os.path.join()
- 绝对路径查找函数:os.path.dirname()、os.getcwd()
- 获取当前文件夹的上一级路径:os.path.pardir
简介
想写一个关于OS包用法的总结。
很多程序里都会调用OS,用了这么久了,每次需要自己写的时候,还得重新花时间寻找各个函数的用法、哪个函数符合我们的需求,费时费力。
以此总结OS常见的用法,如有需要会继续更新。
函数
输出文件夹中的文件名:os.walk()
参考网址:Python os.walk() 方法
os.walk()
方法用于通过在目录树中游走,输出在目录中的文件名,向上或者向下。
常用的python表达为:
for root, dirs, files in os.walk(save_path):
print('root_dir:', root)
print('sub_dirs:', dirs)
print('files:', files)
其中,root
表示当前正在访问的文件夹路径;dirs
表示该文件夹下的子目录名list;files
表示该文件夹下的文件list;
比如:
假设save_path
= “./output/”,且该文件夹下有两个子文件夹:color&depth,除此之外没有其他的子文件;"./output/color/"
和"./output/depth/"
文件夹下有1个子文件(图像),除此之外没有任何的文件夹;
那么,经过上述程序,结果输出应该为:
注意理解其区别!若子文件夹下包含子文件夹,则继续下一次循环遍历!
路径拼接函数:os.path.join()
参考网址:python路径拼接os.path.join()函数的用法
这个函数比较好理解,括号内是各个路径名,它可以连接两个或者更多的路径名。
- 如果各组件名首字母不包含
“/”
,则函数会自动加上; - 如果有一个组件是一个绝对路径,则在他之前的所有组件均会被舍弃;
- 如果最后一个组件为空,则生成的路径以一个
“/”
分隔符结尾。
python程序示例:
import os
Path1 = 'home'
Path2 = 'develop'
Path3 = '/code'
path4 = 'code'
Path1 = Path1 + Path2 + Path3
Path2 = os.path.join(Path1,Path2,Path3)
Path3 = os.path.join(Path1,Path2,path4 )
print ('Path1 = ',Path1)
print ('Path2 = ',Path2 )
print ('Path3 = ',Path3 )
输出结果为:
Path1 = homedevelop/code
Path2 = /code
path3 = home\develop\code
绝对路径查找函数:os.path.dirname()、os.getcwd()
该函数由两种常见用法。
第一种用法:去掉文件名,返回文件所在的目录。
python程序:
print(os.path.dirname('W:\Python_File\juan之购物车.py'))
# 结果
# W:\Python_File
第二种用法:获取当前路径
python用法为:os.path.dirname(__file__)
有的时候,使用./
的方法获取当前文件的相对路径会出错,导致读取文件失败。
为了避免该现象,在读取相对路径下的文件名时,可以先获取当前程序所在的绝对路径,再加上文件相对于当前路径的相对路径!
python程序为:
name = os.path.join(os.path.dirname(__file__) ,'data/0.png')
另外一种获取绝对路径的方法是:
os.getcwd()
该函数输出为当前路径的上一级路径。
获取当前文件夹的上一级路径:os.path.pardir
os.path.pardir
直观上看就是表示当前路径的“父”目录(par-dir)。
在文件名中会出现“../”
的后缀,..
表示的就是上一级目录。
用法:
os.path.abspath(os.path.join(os.path.dirname(__file__),os.path.pardir))
结果:
假设:os.path.dirname(__file__) 输出当前文件夹名为:E:/a/c/
那么利用os.path.pardir后的输出应该为:E:/a/c/../