IO в каталоге программных файлов
Я создал программу, которая собирает данные из файла.txt, читая его, и записывает данные в другой файл.txt. Тем не менее, есть проблема. Когда я запускаю программу в обычном каталоге, она работает отлично. Проблема возникает, когда я помещаю ее в каталог C:\Program Files. Когда я запускаю его, я получаю IOERROR: [Errno 13] В доступе отказано: "мой подкаталог". Я полагаю, что это, вероятно, связано с тем, что в этом каталоге есть дополнительные протоколы, когда дело доходит до редактирования файлов внутри него.
Это в Windows 7, если это еще не было очевидно.
Также, если это имеет значение, программа была написана на Python, а затем преобразована в.exe с py2exe.
4 ответа
Все каталоги под \Program Files
а также \Windows
а также корень C:\
, требуются права администратора в Windows Vista и 7 (и XP, при работе от имени пользователя без прав администратора, что не является значением по умолчанию). Вы не должны пытаться писать там в первую очередь. Это мера безопасности, помогающая предотвратить проникновение вредоносных программ в те места, где они не должны. Поскольку Vista выпущена несколько лет назад, на сайте доступно множество статей. UAC
, Вы можете начать здесь.
Я предлагаю сохранить папку в%appdata%\my подкаталоге. Вам не понадобятся права администратора для этого.
Наиболее вероятная причина этого заключается в том, что каталоги "Program Files" в Windows 7 требуют административных прав для создания подкаталогов.
Вы можете запустить python от имени администратора (удерживать Shift, щелкнуть правой кнопкой мыши python.exe, запускать от имени администратора) или записать в каталог, который не является Program Files.
Вам нужно запустить эту программу как администратор или учетную запись, на которую у вас есть разрешения, если вы хотите записать в папку программных файлов. Если вы запустите исполняемый файл как обычный пользователь, у вас не будет доступа.