0

假设我有一个文件目录,每个文件名都以“YYYYMMDD”格式的日期开头。给定一个文件名,我如何检查它是否存在,如果不存在,如何检查文件名和后续日期?

我有以下内容,但它只检查文件名是否存在。

try:
   with open('filename') as f: pass
except IOError as e:
   print 'The file does not exist.'

如果列表中只有一个文件,我想退出。如果列表中有多个文件,我想检查以下日期。

4

2 回答 2

3
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.

于 2012-07-03T18:07:55.430 回答
0

要检查路径是否为现有文件:

os.path.isfile(path)

True如果path是现有的常规文件,则返回。这遵循符号链接,因此对于同一路径,两者islink()isfile()都可以为真。

更多后续....

于 2012-07-03T18:06:51.003 回答