Как упомянуть домашнюю папку Ma c в файле yaml - PullRequest
0 голосов
/ 06 мая 2020

Может кто-нибудь сказать мне, как упомянуть Ma c Домашнюю папку в файле yaml?

У меня есть файл settings.yaml, который я использую в своем коде Python для подключения к GDrive. Он экспортирует учетные данные в файл JSON, и я хочу, чтобы он был извлечен в папку GDrive в домашнем каталоге.

settings.yaml

    client_config_backend: 'settings'
    client_config:
      client_id: "something"
      client_secret: "something"
      auth_uri: "https://accounts.google.com/o/oauth2/auth"
      token_uri: "https://oauth2.googleapis.com/token"

    save_credentials: True
    save_credentials_backend: 'file'
    save_credentials_file: '/Users/machinename/GDrive/credentials.json'

И в python файл, он упоминается так:

gauth = GoogleAuth(settings_file='settings.yaml')
gauth.LoadCredentialsFile('/Users/machinename/GDrive/credentials.json')

Таким образом, разные люди будут запускать его на разных машинах, а machinename будет отличаться, поэтому я пытаюсь предоставить версию Dynami c для домашнего каталога. Я пробовал ~/GDrive/credentials.json, но это не сработало.

Может ли кто-нибудь помочь, как объявить домашний каталог в yaml-файле?

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Домашняя папка обозначается как ~.
Проблема в том, что вам нужно расширить, и вы можете сделать это, используя os:

import os

os.path.expanduser("~/GDrive/credentials.json")

UPDATE

Если вы хотите сохранить его в коде yaml, это то же самое:

settings.yaml

client_config_backend: 'settings'
client_config:
  client_id: "something"
  client_secret: "something"
  auth_uri: "https://accounts.google.com/o/oauth2/auth"
  token_uri: "https://oauth2.googleapis.com/token"

save_credentials: True
save_credentials_backend: 'file'
save_credentials_file: '~/GDrive/credentials.json'

Затем в python:

credentials_file = "settings.yaml"
with open(credentials_file, "r") as f:
    credentials_info = yaml.load(f)
gauth = GoogleAuth(settings_file=credentials_file)
gauth.LoadCredentialsFile(os.path.expanduser(credentials_info['save_credentials_file'))
0 голосов
/ 06 мая 2020

Это может достичь того, что вы хотели

In settings.yaml
    save_credentials_file: '$HOME/GDrive/credentials.json'
...
In python, put '$HOME/GDrive/credentials.json' into variable save_credentials_file,

gauth.LoadCredentialsFile(os.path.expandvars(save_credentials_file))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...