Почему я получаю ошибку разрешения в Python при попытке записи в файл с правами администратора? - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь записать файл в каталог на Python.Этот файл также отредактирован другой программой (MT4).Файл будет успешно записан, когда программа MT4 не выполняет никаких действий в этом каталоге.Однако всякий раз, когда запускается программа MT4, программа python выдает ошибку.

Вот ошибка Python:

PermissionError: [Errno 13] Permission denied: 'AppData\\Roaming\\MetaQuotes\\Terminal\\94DDB309C90B408373EFC53AC730F336\\MQL4\\Files\\modelout.txt'

Программа Python находится здесь:

from keras.models import load_model

import numpy
import os, time
import ctypes, sys

i = 0

global lastmoddate
lastmoddate = 5

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

if is_admin():
    while i > -1:
        newmoddate = os.stat("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\indicatorout.csv")[8]
        if newmoddate != lastmoddate:
                model = load_model('tried2.h5')
                data = numpy.loadtxt("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\indicatorout.csv", delimiter=",")
                data = numpy.array([data])
                print(data)
                outdata = model.predict(data)
                print(outdata)
                final = numpy.around(outdata, 0)
                numpy.savetxt("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\modelout.txt", final)
                time.sleep(15)
                lastmoddate = os.stat("AppData\Roaming\MetaQuotes\Terminal\94DDB309C90B408373EFC53AC730F336\MQL4\Files\indicatorout.csv")[8]
        else:
                time.sleep(5)
else:
    # Re-run the program with admin rights
    ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

Я использовал решение, чтобы получить администратора от другого поста переполнения стека.Тем не менее, меня никогда не спрашивают, что, я думаю, означает, что python уже работает от имени администратора

Если кто-нибудь может дать какой-либо совет о том, как исправить эту ошибку, это будет с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 25 февраля 2019

Running cmd.exe as an administrator

Поскольку в Windows нет команды sudo, необходимо запустить терминал (cmd.exe) от имени администратора, чтобы достичь уровня разрешений, эквивалентного sudo.

Find cmd.exe in C:\Windows\system32
Right-click on it and Select Run as Administrator
It will then open the command prompt in the directory C:\Windows\system32
Go to your project directory
Execute Script
...