0

Python は初めてで、これを約 1 時間書いています。Google docs api と例は素晴らしいです。接続してファイルなどを作成できます。すべてのファイルをGoogleドライブにバックアップしたいので、使用してみos.walkましたが、理解できない永続的なインデントエラーに遭遇しました。

#!/usr/bin/python

import httplib2
import pprint
from apiclient.discovery import build
from apiclient.http import MediaFileUpload
from oauth2client.client import OAuth2WebServerFlow
from oauth2client.client import Credentials
import os
import sys

rootdir = sys.argv[1]

CLIENT_ID = 'MYCLIENT ID'
CLIENT_SECRET = 'MY SECRET ID'
OAUTH_SCOPE = 'https://www.googleapis.com/auth/drive'

# Redirect URI for installed apps
REDIRECT_URI = 'urn:ietf:wg:oauth:2.0:oob'

json_creds = open('backup_credentials.json', 'r').read()
credentials = Credentials.new_from_json(json_creds)
#
# Create an httplib2.Http object and authorize it with our credentials
http = httplib2.Http()
http = credentials.authorize(http)
drive_service = build('drive', 'v2', http=http)

#Here is where the problem starts
for root, subFolders, files in os.walk(rootdir):
    for filename in files:
        filepath = os.path.join(root, filename)
        print (filepath)
        media_body = MediaFileUpload(filepath, mimetype='text/plain', resumable=True)
        body = {'title': filename,'description': 'A test document','mimeType': 'text/plain'}
        file = drive_service.files().insert(body=body, media_body=media_body).execute()
        pprint.pprint(file)

問題のあるエラーは、行 file = ... です。

実際の誤差は

File "./quickstart.py", line 59
  file = drive_service.files().insert(body=body, media_body=media_body).execute()
                                                                              ^
IndentationError: unindent does not match any outer indentation level
4

1 に答える 1

6

あなたが持っている

    body = {
     'title': filename,
     'description': 'A test document',
     'mimeType': 'text/plain'
  }  
  file = drive_service.files().insert(body=body, media_body=media_body).execute()
  pprint.pprint(file)

あなたが持っているべきとき:

    body = {
     'title': filename,
     'description': 'A test document',
     'mimeType': 'text/plain'
    }
    file = drive_service.files().insert(body=body, media_body=media_body).execute()
    pprint.pprint(file)

file =行は、その「上」の行がインデントされているのと同じレベルにインデントする必要があることに注意してください ( body = ...)。

于 2013-03-02T04:25:47.757 に答える