Python не может найти файл в Windows Подсистеме для Linux - PullRequest
0 голосов
/ 19 марта 2020

Я написал скрипт, используя python в среде Ubuntu в WSL.

Я скачал закрытый ключ firebase "serviceAccountKey. json" в Windows, а затем переместил его в свой рабочий каталог в wsl. (используя 'mv mnt / c / Users / Yiu / Downloads / serviceAccountKey. json ~ / projects / scrape'). Теперь я пытаюсь передать этот файл в Certificate (), но я получаю сообщение об ошибке «файл не найден».

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

Сценарий:

import requests
from bs4 import BeautifulSoup
import firebase_admin
from firebase_admin import credentials, firestore

cred = credentials.Certificate("~/projects/scrape/serviceAccountKey.json")
firebase_admin.initialize_app(cred)
db = firestore.client()

Как можно избавиться от ошибки "файл не найден"?

Ответы [ 2 ]

1 голос
/ 19 марта 2020

~ обычно расширяется оболочкой до значения $HOME. Это не относится к путям в ваших программах, включая Python программы, если только они не выполняют аналогичные замены; Python предоставляет утилиты для этого в pathlib.Path.expanduser и os.path.expanduser .

1 голос
/ 19 марта 2020

Вам необходимо установить абсолютный путь, так как ~ будет отличаться вызывающим пользователем в

cred = credentials.Certificate("~/projects/scrape/serviceAccountKey.json")
...