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
。