質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

5123閲覧

PyDriveを使用したいがyamlファイルを読み込めない

birem

総合スコア13

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/03/26 10:06

前提・実現したいこと

GoogleのAPIを取得し、ドライブへファイルをアップロードするようなプログラムを作成したいのですが、settings.yamlを読み込もうとするとエラーが出てしまいます。settings.yamlはUTF-8で記述しております。
settings.yamlとpythonファイルは同じフォルダに格納しております。
解決法をご教授頂ければ幸いです。

発生している問題・エラーメッセージ

実行するとUnicodeDecodeErrorと言われます。

Traceback (most recent call last): File "/home/pi/APItest/TEST_API.py", line 6, in <module> gauth=GoogleAuth() File "/usr/local/lib/python3.5/dist-packages/pydrive/auth.py", line 169, in __init__ self.settings = LoadSettingsFile(settings_file) File "/usr/local/lib/python3.5/dist-packages/pydrive/settings.py", line 143, in LoadSettingsFile data = load(stream, Loader=Loader) File "/usr/local/lib/python3.5/dist-packages/yaml/__init__.py", line 112, in load loader = Loader(stream) File "/usr/local/lib/python3.5/dist-packages/yaml/loader.py", line 44, in __init__ Reader.__init__(self, stream) File "/usr/local/lib/python3.5/dist-packages/yaml/reader.py", line 85, in __init__ self.determine_encoding() File "/usr/local/lib/python3.5/dist-packages/yaml/reader.py", line 124, in determine_encoding self.update_raw() File "/usr/local/lib/python3.5/dist-packages/yaml/reader.py", line 178, in update_raw data = self.stream.read(size) File "/usr/lib/python3.5/codecs.py", line 321, in decode (result, consumed) = self._buffer_decode(data, self.errors, final) UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 126: invalid start byte

該当のソースコード

settings

1client_config_backend: settings 2client_config: 3 client_id: <client_config_backend: settings 4client_config: 5 client_id: <======================> 6 client_secret: <======================> 7 8save_credentials: True 9save_credentials_backend: file 10save_credentials_file: credentials.json 11 12get_refresh_token: True 13 14oauth_scope: 15 - https://www.googleapis.com/auth/drive.file 16 - https://www.googleapis.com/auth/drive.install> 17 client_secret: <===================> 18 19save_credentials: True 20save_credentials_backend: file 21save_credentials_file: credentials.json 22 23get_refresh_token: True 24 25oauth_scope: 26 - https://www.googleapis.com/auth/drive.file 27 - https://www.googleapis.com/auth/drive.install

python

1from pydrive.auth import GoogleAuth 2from pydrive.drive import GoogleDrive 3import json 4import datetime 5 6gauth = GoogleAuth() 7gauth.CommandLineAuth() 8drive = GoogleDrive(gauth) 9 10f=drive.CreateFile({'title':'TEST.TXT'}) 11f.SetContentString('Hello')

補足情報(FW/ツールのバージョンなど)

python3
OS:Raspbian

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

<======================>の部分に変なものが紛れ込んでいないか確認してください。

投稿2019/03/26 10:42

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

birem

2019/03/26 11:02

まさかと思って確認したところ、日本語が含まれておりました。 無事に解決しました。ありがとうございます。
hayataka2049

2019/03/26 11:21

in position 126なので、先頭を0として126byte目を見ればいい訳です。ちょうど隠れてるあたりだったので。 UTF-8で書いてたなら日本語でもdecodeだけは成功するだろうし、うっかりシフトJISとかEUC-JPとか紛れ込んだ感じですかね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問