def check_scanf_match(string, template): ''' >>> check_scanf_match('frame00000000.icpf', 'frame%08d.icpf') True >>> check_scanf_match('frame00000003.icpf', 'frame%08d.icpf') True >>> check_scanf_match('frame0000001.icpf', 'frame%08d.icpf') True >>> check_scanf_match('frame00000001.icpff', 'frame%08d.icpf') True >>> check_scanf_match('gframe00000001.icpff', 'frame%08d.icpf') False >>> check_scanf_match('fyrame00000001.icpff', 'frame%08d.icpf') False >>> check_scanf_match('xx/yy/frame00000000.icpf', 'xx/yy/frame%08d.icpf') True >>> check_scanf_match('xx/yy//frame00000000.icpf', 'xx/yy/frame%08d.icpf') False >>> check_scanf_match('xx/yy/frame00000000.icpf', 'xx/yy//frame%08d.icpf') False >>> check_scanf_match("-1-2+3-4", "%02d%02d%02d%02d") True >>> check_scanf_match('frame00000240.icpf', 'frame%08d.icpf') True >>> check_scanf_match('/mnt/hgfs/ZLI-NFLX-10/USCJND/ref/1920x1080/videoSRC001_1920x1080_30.yuv.avi', '/mnt/hgfs/ZLI-NFLX-10/USCJND/ref/1920x1080/videoSRC001_1920x1080_*.yuv.avi') True ''' ret = False try: sscanf(string, template) return True except (FormatError, IncompleteCaptureError): pass if fnmatch(string, template): return True return False