Код: Выделить всё
import pathlib
directory = pathlib.Path()
files_to_create = ['a.txt', 'b.TXT']
suffixes_to_test = ['*.txt', '*.TXT']
for filename in files_to_create:
filepath = directory / filename
filepath.touch()
for suffix in suffixes_to_test:
files = [fp.relative_to(directory) for fp in directory.glob(suffix)]
print(f'{suffix}: {files}')
В Windows оба файла A.txt и B.txt соответствуют шаблонам:
и b.txt
Код: Выделить всё
*.txt: [WindowsPath('a.txt'), WindowsPath('b.TXT')]
*.TXT: [WindowsPath('a.txt'), WindowsPath('b.TXT')]
< /code>
Напротив, MacOS только один файл соответствует каждому шаблону: < /p>
*.txt: [PosixPath('a.txt')]
*.TXT: [PosixPath('b.TXT')]
< /code>
Поэтому я предполагаю, что файловая система macOS может быть чувствительна к случаям, а Windows One-нет. Согласно руководству пользователя Apple, используемая файловая система macOS не должна быть чувствительной к случаям по умолчанию по умолчанию, но может быть настроена как таковая.
Что-то подобное может применяться для файловых систем Linux или Unix, как обсуждалось здесь и здесь. быть чем -то вроде этого: < /p>
results = set([fp.relative_to(directory) for suffix in suffixes_to_test for fp in directory.glob(suffix)])
< /code>
, который дает нужный вывод как на macOS, так и на Windows: < /p>
{PosixPath('b.TXT'), PosixPath('a.txt')}
< /code>
Однако есть более элегантный способ? Я не смог найти какую -либо вариант, например, игнорировать_КАЗА
Подробнее здесь: https://stackoverflow.com/questions/714 ... agnostic-a