Я могу запустить RPA EXE, перейдя в каталог сервера и дважды щелкнув его, но получить ошибку, используя командную строкуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Я могу запустить RPA EXE, перейдя в каталог сервера и дважды щелкнув его, но получить ошибку, используя командную строку

Сообщение Anonymous »

Я построил RPA, который работает нормально как .py. Я превратил его в. Затем я переместил его на производственный сервер, с которого он будет работать, и используя File Explorer, дважды щелкнул EXE, и снова он работал нормально. src = "https://i.sstatic.net/fzmihih6.png"/>
Но есть файл token.json. src = "https://i.sstatic.net/f3h8hjvo.png"/>
ниже приведен выдержка из созданного файла журнала. Первый startOfJob - результат запуска его из планировщика заданий SQL, вы можете увидеть в журнале, что он ищет токен, и именно тогда появляется сообщение об ошибке. Второй startofjob < /strong>-это то, что я получил после открытия командной строки и запустив ее самому из командной строки, это сработало. < /P>
2025-04-24 09: 38: 31 280 ============================================================== 09: 38: 31 280 Шаг 1. Соберите учетные данные
2025-04-24 09: 38: 31 280 B =====================
2025-04-24 14: 02: 46 847 Шаг 1. Соберите учетные данные
2025-04-24 14: 02: 46,848 Ищу токен. token.json существует, используйте токен для установления идентичности
2025-04-24 14: 02: 47,135 token.json существует, но истек, обновляется и не повторно Я в том, что я запускаю его в качестве общего диска с нанесением напользованного общего диска с моего компьютера, где, поскольку планировщик заданий SQL Server запускает его непосредственно. Кроме того, я не уверен, что еще включить, чтобы помочь, но если кто -то хочет предложить предложения о том, что еще нужно, я буду рад предоставить.

Код: Выделить всё

import os
import logging
import pysftp
import requests
import sys
from google.auth.transport.requests import Request
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError

#local defs
download_path = "\\\\\LocationOfServices"
SCOPES = ["https://www.googleapis.com/auth/spreadsheets"]
SPREADSHEET_ID = ""
OUT_DIR = 'output/'
OUT_FILENAME = "jcpsLocationOfServices.csv"

#Set up logging
logger = logging.getLogger(__name__)
fileHandler = logging.FileHandler(os.path.join(download_path, "logs.txt"))
formatter = logging.Formatter("%(asctime)s %(message)s")
fileHandler.setFormatter(formatter)
logger.addHandler(fileHandler)
logger.setLevel(logging.INFO)
logger.info("=====================S T A R T  O F  J O B=================================")

#Main function to loc ingo Google Sheet
def main():
logger.info("Step 1. Gather Credentials")
credentials = None
logger.info(f"          Looking for token.json in {download_path}")
if os.path.exists(os.path.join(download_path, "token.json")):
credentials = Credentials.from_authorized_user_file("token.json", SCOPES)
logger.info("          token.json exists, use token to establish identity")
else:
logger.info("          Cannot find token.json")

if not credentials or not credentials.valid:
if credentials and credentials.expired and credentials.refresh_token:
credentials.refresh(Request())
logger.info("          token.json exists but is expired, refresh and retry")
else:
flow = InstalledAppFlow.from_client_secrets_file("credentials.json", SCOPES)
credentials = flow.run_local_server(port=0)
logger.info("          token.json does not exist, use the credentials.json file to contact Google and create it")
with open(os.path.join(download_path, "token.json"), "w") as token:
token.write(credentials.to_json())
logger.info("          token.json has now been created")

try:
logger.info("Step 2.  Send Google Sheet URL to the API and set up usage permissions")
#if Google Sheet contains more than one tab, the tab id is the "gid=" at the end of the URL
url =  f'https://docs.google.com/spreadsheets/export?id=&exportFormat=csv&gid='
response = requests.get(url, headers = {'Authorization': 'Bearer ' + credentials.token})
if response.status_code == 200:

else:
logger.info(f'          *****ERROR***** downloading Google Sheet: {response.status_code}')

except HttpError as error:
logger.info(f'*****ERROR***** {error}')
print(error)

if __name__ ==  "__main__":
main()
logger.info("Step 4. Exit program - CONGRATS!!")
sys.exit(0); ## success
добавление: [/b]
Ссылка на пост, который решил мою проблему, была огромной помощью, и я указал мне в правильном направлении, но это было не на 100%, в которой была моя проблема.if os.path.exists(os.path.join(download_path, "token.json")):
credentials = Credentials.from_authorized_user_file("token.json", SCOPES)
< /code>
В первой строке я ищу существование файла, проходя в пути файла, так что он был его нашел. Но затем во второй строке я пытаюсь открыть файл, не предоставляя путь файла, поэтому он пытался найти файл во временной папке и не найти его. Как только я добавил путь к файлу ко второй строке, он начал работать. Я не уверен, что я бы когда -нибудь поймал это, не прочитав о созданном временном каталоге. Так что огромная благодарность @sevc_10 и @furas за предоставление ссылок и объяснения о временной папке, которая создается !!

Подробнее здесь: https://stackoverflow.com/questions/795 ... king-it-bu
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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