#python #windows #network-drive
#python #Windows #сетевой диск
Вопрос:
Постановка задачи:
У меня есть скрипт python 3.8.5, работающий в Windows 10, который обрабатывает большие файлы из нескольких мест на сетевом диске и создает файлы .png, содержащие графики проанализированных результатов. Все графики хранятся в одной папке назначения на одном сетевом диске. Это выглядит примерно так
Исходные файлы: \drivesrc1src1.txt
\drivesrc2src2.txt
\drivesrc3src3.txt
Выходная папка: \drivedestout1.png
\drivedestout2.png
\drivedestout3.png
Иногда нам нужно восстановить исходный исходный файл и детально изучить часть трассировки данных. Это включает в себя поиск исходного файла в нужной папке. Имена исходных файлов представляют собой длинные буквенно-цифровые строки, поэтому этот процесс является утомительным. Чтобы сделать это менее утомительным, я хотел бы создать символические ссылки на исходные исходные файлы и сохранить их рядом с файлами .png. Тогда выходная папка будет выглядеть следующим образом
Выходные файлы:
\drivedestout1.png
\drivedestout1_src.txt
\drivedestout2.png
\drivedestout2_src.txt
\drivedestout3.png
\drivedestout3_src.txt
где \drivedestout1_src.txt
находится символическая \drivesrc1src1.txt
ссылка на и т.д.
Я пытаюсь добиться этого с помощью
os.symlink('//drive/dest/out1_src.txt', '//drive/src1/src1.txt')
Однако независимо от того, что я пытаюсь, я получаю
PermissionError: [WinError 5] Доступ запрещен
Я попытался запустить скрипт из командной оболочки с повышенными правами, включив режим разработчика и запустив
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
но, похоже, ничего не работает. Нет абсолютно никаких проблем с созданием символических ссылок на локальном диске, например,
os.symlink('C:/dest/out1_src.txt', '//drive/src1/src1.txt')
но это не достигает моих целей. Я также попытался создать ссылки на локальном диске, указанные выше, а затем скопировать их в сетевое расположение с помощью
shutil.copy(src, dest, follow_symlinks = False)
и он завершается с тем же сообщением об ошибке. Попытки выполнить то же самое непосредственно в командной строке из командной строки с повышенными правами также завершаются неудачей с тем же сообщением об ошибке «Доступ запрещен»
mklink \drivedestout1_src.txt \drivesrc1src1.txt
Похоже, это какая-то ошибка разрешения Windows. Однако, когда я запускаю fsutil behavior query SymlinkEvaluation
в оболочке, я получаю
Включены локальные и локальные символические ссылки.
Включены локальные и удаленные символические ссылки.
Включены удаленные и локальные символические ссылки.
Включены удаленные символьные ссылки на удаленные.
Есть какие-нибудь идеи, как это решить? Я часами искал в Google, и, согласно всему, что я читаю, это должно работать, за исключением того, что это не так.
Ответ №1:
Откройте secpol.msc на компьютере, где размещен общий ресурс newtork, перейдите к разделам Локальные политики — Назначение прав пользователя — Создание символических ссылок и добавление учетной записи, которую вы используете для подключения к общему сетевому ресурсу. Вам необходимо выйти из общей папки (Панель управления — Все элементы панели управления — Диспетчер учетных данных или, возможно, вам придется перезагрузить оба компьютера) и повторить попытку.
Комментарии:
1. Спасибо, придется попросить моего сетевого администратора попробовать это, так как он заблокирован на корпоративном уровне, будет возвращен обратно.