2016-02-24 6 views
1

У меня возникла проблема обновления с помощью google drive api. Даже я следовал примеру Quickstart и после внесения некоторых изменений на нем файл на Google диске успешно обновлен. Но теперь возникает новая проблема после обновления, я не уверен, что это связано с тем, что мое изменение на Quickstart не является правильным, или что-то еще. Проблема заключается в обновлении файла excel на Google Drive с файлом excel на моем локальном компьютере, файл excel на моем локальном махине не редактируется, если я не закрываю терминал IDLE; но если я закрою окно IDLE, я могу сделать все с помощью файла excel и сохранить изменения. Например, не закрывая файл IDLE, и я внес некоторые изменения в файл excel и попытаюсь его сохранить, система говорит что-то вроде нарушения доступа и сохраняет файл как временный файл 62635600 ...., если я попытаюсь для удаления файла excel, система сообщает, что файл используется pythonw.exe. После закрытия окна IDLE, excel возвращается в нормальное состояние, как и обычный файл excel. У кого-нибудь есть идея?После обновления файла на Google диске через google api, файл на локальном компьютере не редактируется без закрытия окна IDLE

ответ

1

Вы можете установить Google диск на свой локальный компьютер и скопировать файл в каталог диска google в правильной позиции. то Google-накопитель (клиентское программное обеспечение) обновит файл.

+1

Хе-хе, да, я знаю, но мне нужно что-то делать автоматически, а не вручную, поэтому мне нужно написать скрипт для выполнения работы. В любом случае, большое спасибо за ваш ответ. – liga810

+2

да, сделайте копию по сценарию. поэтому напишите сценарий, который скопирует файл excel на диск Google. Google Drive обнаружит изменение и синхронизирует его. –

+1

Да, но как написать скрипт? Я могу написать сценарий для вставки файла с локального диска в Google Drive, но это создание нового файла на Google Drive, поэтому, если я использую один и тот же скрипт каждый день, сценарий будет просто создавать несколько новых файлов на Google диске вместо замены старый файл с новым файлом. Я знаю, что я должен использовать что-то вроде service.files(). Update() .excecute() для обновления определенного файла, но как получить файл на локальном диске и как использовать service.files(). Update(). excecute() для обновления определенного файла локальным файлом? – liga810

1

Я нашел здесь пример и последовал за ним. Мой вопрос заключается в том, что «title», «descript» и «mimeType» локального файла точно такие же, как и файл на Google Диске (причиной того, что локальный файл имеет еще одно значение строки, чем файл на Google диске, все остальное то же самое), мне нужно присвоить значение этим 3 элементам? если нет, то я не могу обновить файл на диске Google с файлом на локальном диске, если я присвою значение просто «заголовку», сценарий обновит файл на диске Google с файлом на локальной машине, но странно если я не закрываю терминал IDLE, файл на моем локальном компьютере не редактируется, даже скрипт phthon работает успешно и закончен, сообщение, которое я получил, - это то, что «файл использует pythonw.exe ...» , как я могу справиться с этим?

def update_file(service, file_id, new_title, new_description, new_mime_type, 
       new_filename, new_revision):  
    try: 
    file = service.files().get(fileId=file_id).execute() 

    # File's new metadata. 
    file['title'] = new_title 
    file['description'] = new_description 
    file['mimeType'] = new_mime_type 

    # File's new content. 
    media_body = MediaFileUpload(
     new_filename, mimetype=new_mime_type, resumable=True) 

    # Send the request to the API. 
    updated_file = service.files().update(
     fileId=file_id, 
     body=file, 
     newRevision=new_revision, 
     media_body=media_body).execute() 
    return updated_file 
    except errors.HttpError, error: 
    print 'An error occurred: %s' % error 
    return None 
+0

Этот код почти правильный. Итак, какова ваша проблема сейчас - не удается обновить или использовать файл pythonw.exe? –

+0

Кроме того, было бы лучше включить это в вопрос, а не писать в качестве ответа. –

+0

Я могу использовать этот код для обновления файлов на Google Диске. Моя проблема заключается в том, что после запуска этого скрипта, если я не закрываю окно IDLE, тогда файл excel на моем ноутбуке, который был обновлен только сейчас, не редактируется, и система говорит, что что-то вроде этого файла excel используется pythonw.exe ; если я закрою окно IDLE, тогда файл excel будет доступен для редактирования. – liga810

3

Предполагая, что вы используете API v3, я считаю, что следующий код будет делать то, что вы пытаетесь достичь:

def update_file(file_path, fileId): 
    media_body = MediaFileUpload(file_path, mimetype="application/vnd.ms-excel") 
    results = file_service.update(fileId=fileId, media_body=media_body).execute() 
    return results 

Я уверен об этом, так как я использую его в one of my own applications я создал периодически резервные копии файлов на мой аккаунт Google Диска.
Он также содержит несколько практических примеров для взаимодействия с API Google Диска, если вы заинтересованы.

+0

Спасибо, к сожалению, я использую v2. Большое спасибо за помощь. Если я не смогу пройти через v2, я переключусь на v3. – liga810

 Смежные вопросы

  • Нет связанных вопросов^_^