Проверить допустимость пути в Python без создания файла в месте назначения пути

У меня есть путь (включая каталог и имя файла).
Мне нужно проверить, является ли имя файла допустимым, например. если файловая система позволит мне создать файл с таким именем.
Имя файла содержит некоторые символы Юникода .

Можно с уверенностью предположить, что сегмент пути к каталогу действителен и доступен (Я пытался сделать вопрос более общеприменимым, и, видимо, я зашел слишком далеко).

Я очень не хочу ни от чего бежать, если только мне не придется.

Я бы опубликовал несколько примеров персонажей, с которыми имею дело, но, видимо, они автоматически удаляются системой обмена стеками. В любом случае, я хочу сохранить стандартные объекты Unicode, такие как ö, и избегать только тех вещей, которые недопустимы в имени файла.


Вот в чем загвоздка. В целевом пути уже может быть (а может и не быть) файл. Мне нужно сохранить этот файл, если он существует, и не создавать файл, если его нет.

В основном я хочу проверить, могу ли я могу записать в путь без фактического открытия пути для записи (и автоматического создания/затирания файлов, что обычно влечет за собой).

Как таковой:

try:
    open(filename, 'w')
except OSError:
    # handle error here

отсюда

Неприемлемо, потому что он перезапишет существующий файл, который я не хочу трогать (если он есть), или создать указанный файл, если его нет.

Я знаю, что могу сделать:

if not os.access(filePath, os.W_OK):
    try:
        open(filePath, 'w').close()
        os.unlink(filePath)
    except OSError:
        # handle error here

Но это создаст файл по адресу filePath, который мне затем придется os.unlink.

В конце концов, кажется, что он тратит 6 или 7 строк, чтобы сделать что-то, что должно быть таким простым, как os.isvalidpath(filePath) или подобное.


Кроме того, мне нужно, чтобы это работало (по крайней мере) на Windows и MacOS, поэтому я хотел бы избежать вещей, специфичных для платформы.

``

72
задан Aran-Fey 30 May 2019 в 10:51
поделиться