在接触到和python相关的代码时,我发现通常会在头文件import os,然后在程序中利用os来调用一些方法,从而实现对文件或路径的操作。在这里总结一下平时遇到的一些os模块下的方法,并且通过一个小案例来把经常用的os模块下的方法联系起来,以便学以致用。
用到的主要有以下这些:
os.getcwd() #获得你当前.py文件所在的目录,也就是你当前的.py文件所在的位置
os.listdir(path) #path为自定义的目录路径,通过该语句会返回一个字符串列表,该列表中的元素为目录路径path下的文件的名字或者是目录路径path下的目录的名字,因为该路径下可能嵌套的又是另外一个目录。
os.path.join(path1, path2) #用于连接两个路径,连接之后的路径相当于path1/path2。
os.path.abspath(filenmae) #filename是一个文件的名字,这个语句用于获取文件filename的绝对路径,绝对路径就是有头有尾,这个路径是唯一的。
os.path.isdir(path),os.path.isfile(path),os.path.exists(path) #path是一个路径,可以对应一个具体的文件,也可以对应一个目录,这三个语句的意思分别是判断当前path是不是一个目录,判断当前path是不是一个文件,判断当前path是否存在。
对于上面的这几个函数,我们用代码来测试以下,注释说明我都写到代码里了:
import os
# 先用os.getcwd 获得我当前文件所处的路径
print('os.getcwd()==', os.getcwd())
# os.getcwd()== /home/liubs/ottertune/test 这是打印输出
# 再用os.listdir 获得当前文件所在目录下的所有文件,也就是同级别的所有文件,以字符串列表的形
# 注意,我当前文件所在目录下不止一个文件,还有其他的文件。
path1 = '/home/liubs/ottertune/test'
print('os.listdir(path=path1)==', os.listdir(path=pa
# os.listdir(path=path1)== ['test01_changeconfig.py'
# operate_system_os.py是我现在运行的文件。
# os.path.join用于将两个路径进行相加,并且在两个字符串之间加上‘/’
path2 = os.path.join(path1, os.listdir(path1)[1])
print('os.path.join==', path2)
# path1是我定义的一个路径,然后获得该路径下的一个文件名,将其进行连接
# 输出结果如下:os.path.join== /home/liubs/ottertune/test/t
# os.path.abspath获取文件的绝对路径,包括文件名
path3 = os.path.abspath('operate_system_os.py')
print('os.path.abspath==', path3)
# os.path.abspath== /home/liubs/ottertune/test/opera
# os.path.exists,os.path.isdir,os.path.isfile,分别为路径是
print(os.path.exists('test04_knobsselect.py'))
# 这里打印出来的为:True 因为test04_knobsselect.py这个文件确实存在。
打印结果如下:
小案例的实现:
问题:打印出当前目录中有test关键字的文件的绝对路径信息
# 1、获得当前所在的文件目录路径
path_str = os.getcwd()
# 打印出当前文件目录路径下所有的文件名或目录名
path_list = os.listdir(path_str)
# 在当前目录下新建一个目录,名字为 'this_test00'
new_file_path = 'this_test00'
# 定义关键字段,即要查找出的是所有带有关键字段的文件的路径
sub_str = 'test'
# 查看新建的目录名是否已经在当前目录下的列表中存在
# 如果不存在,则在当前目录下新建一个目录
if new_file_path not in path_list:
os.mkdir(new_file_path)
# 遍历当前目录下的所有文件名和目录名
for i in path_list:
# 如果是一个目录名,则删除该目录
if os.path.isdir(i):
os.rmdir(i)
# 如果是一个文件名,则查看文件名中是否包含关键字段,这里用到find方法,如果不包含则返回值为-1,不等于-1则是包含关键字段
if i.find(sub_str) != -1:
# 将当前文件所在的目录和包含关键字的文件名进行连接并进行打印。
path = os.path.join(path_str, i)
print(path)
结果如下: