Задать вопрос
danila763
@danila763
Учу python, sql

Как редактировать скрытый файл в Windows через Python?

Создаю файл, делаю скрытым, и при попытке открыть в режиме записи получаю "Permission denied"

Получил права админа для скрипта - все равно не помогает. Никто не знает как это исправить

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

Мой код:
from elevate import elevate
import ctypes


# Перезапускаем скрипт с правами Администратора
elevate()

# Проверяем что запущено с правами Администратора
print('is Admin:', ctypes.windll.shell32.IsUserAnAdmin())
try:
    with open("C:\\test.txt", 'w') as f:
        pass
except Exception as e:
    print(e)
    # [Errno 13] Permission denied: 'C:\\test.txt'
input()
  • Вопрос задан
  • 252 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Флаг скрытый или системный отвечает исключительно за визуализацию в типовых программах типа консольной команды dir или проводника и не может отвечать за защиту от записи

Точно других флагов нет? Поставь себе far и смотри информацию по файлу удобно.

Защиту от записи может сделать флаг - только для чтения, он на столько считается устаревшим (но работающим даже на fat), что многие редакторы при его обнаружении на время сохранения файла его отменяют а потом возвращают, так как для системного администратора это создает больше проблем чем удобства, т.е. его уже не замечают но открыть на запись такой файл не получится
Ответ написан
danila763
@danila763 Автор вопроса
Учу python, sql
Несмотря на то, что вручную снять флаг `скрытый` у флага `desktop.ini` нельзя, я смог сделать это програмно:
import win32api

file = 'D:/3D/desktop.ini'

# Сохраняем атрибуты
attrs = win32api.GetFileAttributes(file)

# Снимаем все атрибуты
win32api.SetFileAttributes(file, 0)

# Открываем и редактируем если надо
with open(file, 'w') as f:
    print('open success')

# Устанавливаем изначальные атрибуты
win32api.SetFileAttributes(file, attrs)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы