os.walk и os.scandir возвращают ~$ вместо 1-го и 2-го символов имени файла

У меня есть сценарий Python, который читает все имена файлов и пути в каталоге на общем диске. Затем он берет эти пути и имена файлов и создает некоторые гиперссылки HTML, которые я могу добавить на наш сайт, чтобы мне не приходилось делать это вручную по одному. Скрипт работает как положено, но по какой-то причине оба os.walk а также os.scandir() возвращаются ~$ на некоторых из путей и имен файлов, заменяющих 1-й и 2-й символы в имени файла.

Я не могу найти какую-либо документацию по этому поведению, поэтому, если у кого-то есть понимание, это было бы здорово.

Код, который я использую, выглядит следующим образом:

import os

f = os.scandir(path=r"\\server_path\share_folder")

print(f)
for fn in f:
    format_name = fn.name.split('.')[0].replace('_', ' ')
    print(r'        <p><a href="{}">{}</a></p>'.format(fn.path, format_name), "\n")

1 ответ

Решение

С помощью ссылки @Barmar, приведенной в комментариях, я узнал, что имена файлов с ~$ в начале фактически временный файл, который существует, когда кто-то еще открывает файл. Обладая этими знаниями, я теперь могу решить проблему, просто исключив файлы с этим префиксом.

Код:

import os

f = os.scandir(path=r"\\server_path\share_folder")

print(f)
for fn in f:
    if fn.name[:2] != "~$":
        format_name = fn.name.split('.')[0].replace('_', ' ')
        print(r'        <p><a href="{}">{}</a></p>'.format(fn.path, format_name), "\n")
Другие вопросы по тегам