假设我有一个文件目录,每个文件名都以“YYYYMMDD”格式的日期开头。给定一个文件名,我如何检查它是否存在,如果不存在,如何检查文件名和后续日期?
我有以下内容,但它只检查文件名是否存在。
try:
with open('filename') as f: pass
except IOError as e:
print 'The file does not exist.'
如果列表中只有一个文件,我想退出。如果列表中有多个文件,我想检查以下日期。
假设我有一个文件目录,每个文件名都以“YYYYMMDD”格式的日期开头。给定一个文件名,我如何检查它是否存在,如果不存在,如何检查文件名和后续日期?
我有以下内容,但它只检查文件名是否存在。
try:
with open('filename') as f: pass
except IOError as e:
print 'The file does not exist.'
如果列表中只有一个文件,我想退出。如果列表中有多个文件,我想检查以下日期。
import glob
import bisect
filenames = sorted(glob.glob('*'))
def get_file_name_prev(fname):
idx = bisect.bisect_right(filenames, fname)-1
if idx < 0:
raise ValueError('no preceding filename is available')
else:
return filenames[idx]
def get_file_name_next(fname):
idx = bisect.bisect_left(filenames, fname)
if idx >= len(filenames):
raise ValueError('no subsequent filename is available')
else:
return filenames[idx]
编辑: @JF Sebastian:很容易测试。
filenames = ['b', 'd']
get_file_name_prev('c') # => returns 'b'
get_file_name_next('c') # => returns 'd'
如果他想要下一个文件名,那么他需要bisect.bisect_left
.
要检查路径是否为现有文件:
True
如果path是现有的常规文件,则返回。这遵循符号链接,因此对于同一路径,两者islink()
和isfile()
都可以为真。
更多后续....