如何在没有管理员权限的情况下写入“Program Files (x86)”?

问题描述 投票:0回答:1

我正在使用 PyInstaller 制作 exe 并使用 InstallForge 为其制作安装程序。在 InstallForge 之前,我可以使用

with open("Saves/default.sav", "w"): ...
写入文件。将应用程序安装到“Program Files (x86)”后,我需要管理员访问权限才能保存文件。有没有不需要管理员权限的保存文件的方法?

文件结构:

- Project Folder  
  |- main.py  
  |- Saves  
  |  |- default.sav  
  |  
  |- Assets  
     |- ...  

我的代码:

import pygame
from pygame.locals import *

pygame.init()
app = pygame.display.set_mode((640, 480), RESIZABLE)

def saveFile(contents):
    with open("Saves/default.sav", "w") as f:
        f.write(contents)

run = True
while run:
    for ev in pygame.event.get():
        if ev.type == QUIT:
            saveFile("some_placeholder_data")
            pygame.quit()
            run = False

    if not run:
        break

这样程序关闭时所有数据都会被保存。我分别尝试了

with open("...", "w") as f: ...
open()
close()
。两者的结果都是:

权限错误:[Errno 13]权限被拒绝

python windows file-writing
1个回答
0
投票

这个答案假设 Windows 操作系统。 您正在尝试将文件写入安装可执行文件的目录。x86 不应该用于您的目的。尝试将文件路径更改为用户目录。我会: '''

#add this
#Path to file
path = 'C:/User_directory/Program_save_folder/default.sav'
#Save File function
def saveFile(contents,path=path):
    with open(path, "w") as f:
        f.write(contents)
#This provides you with a default path and the ability to take a different 
#path as an input to the function

''' 但是,使用操作系统库你应该:

'''

#Path to file
path = 'C:/User_directory/Program_save_folder/default.sav'
#Save File function
def saveFile(contents,path=path):
    directory = os.path.dirname(path)
    if not os.path.exists(directory):
        os.makedirs(directory)
    with open(path, "w") as f:
        f.write(contents)

'''

© www.soinside.com 2019 - 2024. All rights reserved.