0

ファイルのディレクトリがあり、各ファイル名が「YYYYMMDD」形式の日付で始まるとします。ファイル名が与えられた場合、それが存在するかどうかを確認し、存在しない場合はファイル名を次の日付で確認するにはどうすればよいですか?

私は次のものを持っていますが、ファイル名が存在するかどうかのみをチェックします。

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

リストにファイルが 1 つしかない場合は、終了します。リストに複数のファイルがある場合は、次の日付を確認したい。

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)

pathが既存の通常ファイルであるTrue場合に戻ります。これはシンボリック リンクをたどるので、同じパスに対して と の両方 が成り立ちます。islink()isfile()

さらに続きます....

于 2012-07-03T18:06:51.003 に答える