但这种时候容易混淆文件夹和文件,所以可以采用如下命令只检查文件,同样返回布尔型变量
如果文件不存在,直接用open()函数会抛出异常,这时候只要try一下并获取异常即可,如下
上面包含了文件不存在和文件不可读取两种错误类型,这两种都属于IO error,简化一下有,
主要是通过文件的路径来创建path对象,进而判断路径是否存在,如下
(想到这些简单的知识都似曾相识,为什么要零散地记录呢
参考资料: https://www.py.cn/faq/python/12821.html
需要导入OS模块。
判断C:\有没有test目录。
如果不存在则建立一个,代码如下:
import osif not os.path.exists(r"C:\test"):
os.mkdir(r"C:\test")
#coding=utf-8'''
Created on 2014-11-17
@author: Neo
'''
#0:equal
#1:path1 is sub folder of path2
#-1:path2 is sub folder of path1
#2: unrelated
def comparePath(path1, path2):
if not path1 or not path1:
return 2
path1Len = len(path1)
path2Len = len(path2)
if path1Len > path2Len:
longPath = path1
shortPath = path2
cmpFator = 1
else:
longPath = path2
shortPath = path1
cmpFator = -1
shortPathLen = len(shortPath)
longPathLen = len(longPath)
i = 0
j = 0
while i < shortPathLen and j < longPathLen:
c1 = shortPath[i]
c2 = longPath[j]
if isSlash(c1):
if not isSlash(c2):
return 2
while i < shortPathLen and isSlash(shortPath[i]):
i += 1
while j < longPathLen and isSlash(longPath[j]):
j += 1
else:
if c1 != c2:
if i == shortPathLen:
return cmpFator
else:
return 2
i += 1
j += 1
if i == shortPathLen:
if j == longPathLen:
return 0
while j < longPathLen:
if not isSlash(longPath[j]):
return cmpFator
j += 1
return 0
else:
return 2
def isSlash(c):
return c == '/' or c == '\\'
print comparePath('C:/', 'C:/')
print comparePath('C:/', 'C:/Python27')
print comparePath('C:/Python27', 'C:')
print comparePath('C:/Python27', 'D:')
result:
0-1
1
2