Список всех имен в каталоге, а не, так что вы можете сделать регистрозависимое матч:
def isfile_casesensitive(path):
if not os.path.isfile(path): return False # exit early
directory, filename = os.path.split(path)
return filename in os.listdir(directory)
if isfile_casesensitive(file):
print "exist..."
else:
print "not found..."
Демо:
>>> import os
>>> file = os.path.join(os.environ('TMP'), 'test.txt')
>>> open(file, 'w') # touch
<open file 'C:\\...\\test.txt', mode 'w' at 0x00000000021951E0>
>>> os.path.isfile(path)
True
>>> os.path.isfile(path.upper())
True
>>> def isfile_casesensitive(path):
... if not os.path.isfile(path): return False # exit early
... directory, filename = os.path.split(path)
... return any(f == filename for f in os.listdir(directory))
...
>>> isfile_casesensitive(path)
True
>>> isfile_casesensitive(path.upper())
False
Для того, чтобы быть понятным, вы хотите, чтобы 'файл' соответствовал' c: \ Temp \ TEST.TXT', или ** NOT ** соответствовать ему? – MattDMo
Что вы хотите от операционной системы. В python 'C: \ Temp \ test.txt' и' C: \ Temp \ TEST.TXT' * точно * то же самое, поэтому результат, полученный вами 'isfile', верен. – Bakuriu
(потому что файловые системы Windows не чувствительны к регистру) –