Проблема – Наш автоматизированный процесс успешно завершает процесс, но у отдельного пользователя возникают ошибки разрешений при попытке запустить его вручную. Это происходит в виртуальной среде, поэтому отдельный пользователь не должен сталкиваться с этой ошибкой.
Шаги перечислены ниже. Кроме того, прилагается снимок экрана, на котором показано точное сообщение об ошибке.
- Мы запускаем файл CMD, который запускает наш скрипт Python.
- В зависимости от выбранного CMD устанавливается среда Prod или DEV.
- Создаются пользовательские функции.
- Мы сохраняем данные в журнал. Журнал создаем самостоятельно. Это та часть, где пользователь получает ошибку PermissionError. Как мы можем обойти людей, сталкивающихся с ошибками здесь, если они находятся в удаленной среде?
Код Logger приведен ниже:
Код: Выделить всё
import os
import time
from datetime import datetime
class Logger():
def __init__(self,
ts=True,
log_location=None,
end='\n',
flush=True,
suppress_print=False,
auto_save=True,
queue=''):
if end is None:
self.end = ''
else:
self.end = str(end)
self.ts = ts
self.flush= flush
self.suppress_print = suppress_print
self.auto_save = auto_save
self.queue = queue
if log_location is None:
log_location = './logs/'
if not os.path.exists(log_location):
os.mkdir(log_location)
if os.path.isdir(log_location):
self.filepath = f'{log_location}log_{datetime.now():%Y%m%d_%H%M%S}.txt'
elif os.path.exists(log_location):
self.filepath = log_location
else:
raise Exception('Initialization failed: bad log_location input.')
return
def save(self):
# writes queue to file (if any), then saves.
with open(self.filepath, 'a') as f:
f.write(self.queue)
self.queue = ''
return
def add(self, add_text, save_now=None, suppress_print=None, end=None):
add_text = str(add_text)
if self.ts:
add_text = f'{datetime.now()} {add_text}'
add_text = add_text.replace('\n', '\n'+' '*28)
if save_now is None:
save_now = self.auto_save
if suppress_print is None:
suppress_print = self.suppress_print
if end is None:
end = self.end
if not suppress_print:
print(f'{add_text}{end}', flush=self.flush, end='')
self.queue += f'{add_text}{end}'
if save_now:
self.save()
return
def print_queue(self):
print(self.queue, flush=self.flush)
return
def print_full_log(self):
f = open(self.filepath, 'r')
already_written = f.read()
f.close()
print(already_written+self.queue, flush=self.flush)
return
def __str__(self):
if self.queue == '':
return 'Logger file saved at: {}\n\nQueue is empty.'
else:
return 'Logger file saved at: {}\n\nQueue:\n{}'.format(self.filepath, self.queue)

Подробнее здесь: https://stackoverflow.com/questions/798 ... o-txt-file
Мобильная версия