Проверьте, действителен ли путь в Python, не создавая файл в цели пути.Python

Программы на Python
Ответить
Anonymous
 Проверьте, действителен ли путь в Python, не создавая файл в цели пути.

Сообщение Anonymous »

У меня есть путь (включая имя каталога и файла).

Мне нужно проверить, является ли имя файла допустимым, например. если файловая система позволит мне создать файл с таким именем.

Имя файла содержит несколько символов Юникода.
Можно с уверенностью предположить, что сегмент пути к каталогу действителен и доступен (Я пытался сделать вопрос более общеприменимым, и, видимо, я зашел слишком далеко).
Мне очень не хочется избегать чего-либо, если я не должны.
Я бы опубликовал несколько примеров символов, с которыми имею дело, но, очевидно, они автоматически удаляются системой обмена стеками. В любом случае, я хочу сохранить стандартные объекты Юникода, такие как ö, и экранировать только те элементы, которые недопустимы в имени файла.

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

Код: Выделить всё

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
Но это создаст файл по пути к файлу, который мне затем придется os.unlink.
В конце концов, кажется, что требуется 6 или 7 строк, чтобы сделать что-то такое же простое, как os.isvalidpath(filePath) или подобное.

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

Подробнее здесь: https://stackoverflow.com/questions/953 ... e-paths-ta
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»