判断文件是否存在主要有两种方法:
import os
os.path.exists('xxx/xxx/filename') # True/False
以上方法中入参的路径可以是文件路径也可以是文件夹路径,所以可以用于判断文件以及文件夹是否存在。
但是有一种特殊的情况是可能入参传的是一个文件夹路径,但是文件夹路径的上一层有个相同的文件,例如/usr/local/testfile这是一个文件夹,但是/usr/local路径下有一个文件就刚好叫做testfile,所以这样会产生混乱,所以建议如果是要判断文件是否存在,直接用:os.path.isfile('/xxx/xxx/filename'),而判断文件夹是否存在时则用:os.path.exists(xxx)这个方法。
以上只是用os模块实现的,还可以用pathlib模块来实现文件判断,示例代码如下:
import pathlib
path = pathlib.Path('/usr/local/file')
path.exist() # True/False 判断路径是否存在
path.is_file # 判断对应路径是否是文件
以上注释可知如果path
路径存在且不是文件,那么很显然就只能是对应文件夹了。
拓展: 判断文件读写属性
这里来判断文件读写属性用到的就是os
模块里的access
方法,格式为:
os.access(path,mode)
path
为文件路径,mode
为需要判断的属性,主要分为以下四种:
- os.F_OK: 判断文件是否存在
- os.R_OK: 判断文件是否可读
- os.W_OK: 判断文件是否可以写入
- os.X_OK: 判断文件是否有执行权限
具体语法示例如下:
import os
if not os.access('/usr/local/script/run.sh',os.X_OK):
print "file has no permission to execute!"