os.walk и os.scandir возвращают ~ $ вместо 1-го и 2-го символов имени файла - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть скрипт на 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 Ответ

0 голосов
/ 14 декабря 2018

С помощью ссылки @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")
...