Ошибка разрешений Python при добавлении в текстовый файлPython

Программы на Python
Ответить
Anonymous
 Ошибка разрешений Python при добавлении в текстовый файл

Сообщение Anonymous »

У нашей команды есть автоматизированный процесс, который запускается ежедневно. Во время этого процесса у нас есть средство ведения журнала, которое мы создали для отслеживания каждого этапа процесса.
Проблема – Наш автоматизированный процесс успешно завершает процесс, но у отдельного пользователя возникают ошибки разрешений при попытке запустить его вручную. Это происходит в виртуальной среде, поэтому отдельный пользователь не должен сталкиваться с этой ошибкой.
Шаги перечислены ниже. Кроме того, прилагается снимок экрана, на котором показано точное сообщение об ошибке.
  • Мы запускаем файл CMD, который запускает наш скрипт Python.
  • В зависимости от выбранного CMD устанавливается среда Prod или DEV.
  • Создаются пользовательские функции.
  • Мы сохраняем данные в журнал. Журнал создаем самостоятельно. Это та часть, где пользователь получает ошибку PermissionError. Как мы можем обойти людей, сталкивающихся с ошибками здесь, если они находятся в удаленной среде?
Прилагаемый снимок экрана показывает разбивку после запуска сценария Python. В дополнение к этому прилагается код Logger, поэтому вы можете видеть, как он генерируется. Он использует пакеты os, time и datetime.
Код 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»