linux shell及python判断文件/文件夹是否存在

11 篇文章 1 订阅

linux shell及python判断文件/文件夹是否存在

shell脚本形式进行判断

判断文件夹是否存在

#!/usr/bin/env bash
#Pragram:linux判断文件/文件夹是否存在
#Date:  2020.4.5
#Author:liheng
#Verson:V1.0


path="/home/liheng/ADAS_Video"

# 文件夹存在需要执行的操作
function folder_exis()
{
    # 以简单打印输出为例
    echo the path ${path} exist!
}




path="/home/liheng/ADAS_Video"
if [ -d ${path} ];then
    folder_exis
else
    echo dir ${path} not exist!
    exit 0
fi


判断文件是否存在

判文件夹是否存在时,if判断中采用的比较符是-d,而判断文件是否存在时,只用将其修改为-f即可,代码如下:

#!/usr/bin/env bash
#Pragram:linux判断文件/文件夹是否存在
#Date:  2020.4.5
#Author:liheng
#Verson:V1.0


path="/home/liheng/ADAS_Video/123.avi"

# 文件夹存在需要执行的操作
function folder_exis()
{
    # 以简单打印输出为例
    echo the path ${path} exist!
}




path="/home/liheng/ADAS_Video"
if [ -f ${path} ];then
    folder_exis
else
    echo dir ${path} not exist!
    exit 0
fi

其他比较符说明

-e 判断对象是否存在
-d 判断对象是否存在,并且为目录
-f 判断对象是否存在,并且为常规文件
-L 判断对象是否存在,并且为符号链接
-h 判断对象是否存在,并且为硬链接
-s 判断对象是否存在,并且长度不为0
-r 判断对象是否存在,并且可读
-w 判断对象是否存在,并且可写
-x 判断对象是否存在,并且可执行
-O 判断对象是否存在,并且属于当前用户
-G 判断对象是否存在,并且属于当前用户组
-nt 判断file1是否比file2新  [ "/data/file1" -nt "/data/file2" ]
-ot 判断file1是否比file2旧  [ "/data/file1" -ot "/data/file2" ]

采用python脚本进行判断

考虑到python跨平台特性,以及python库的齐全,采用python脚本进行判断会更简单,且便于执复杂操作。
采用python脚本判断文件/文件夹是否存在,采用os模块中的os.path.exists()即可,该函数既可以判断文件是否存在,也可以判断文件夹是否存在。

#!/usr/bin/env python3
#coding=utf-8

#============================#
#Program:is_file_exist.py
#       判断文件/文件夹是否存在
#Date:20-4-5
#Author:liheng
#Version:V1.0
#============================#

import os


def path_exist(path):
    print('path exist')

    dirs = os.listdir(path)
    # 输出所有文件和文件夹
    for file in dirs:
        print(file)




if __name__ == '__main__':
    path = '/home/liheng/ADAS_Video'
    path = '/hoem/liheng/ADAS_Video/123.avi'
    if os.path.exists(path):
        path_exist(path)
    else:
        os.makedirs(path)

但是这种方法存在一个问题,假设你想检查文件test_data是否存在,但是当前路径下有个叫test_data的文件夹,这样就可能出现误判。为了避免这样的情况,可以这样:

import os
os.path.isfile('test-data')

通过这个方法,如果文件test-data不存在将返回False,反之返回True

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值