У меня возникла проблема обновления с помощью 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
ответ
Вы можете установить Google диск на свой локальный компьютер и скопировать файл в каталог диска google в правильной позиции. то Google-накопитель (клиентское программное обеспечение) обновит файл.
Я нашел здесь пример и последовал за ним. Мой вопрос заключается в том, что «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
Этот код почти правильный. Итак, какова ваша проблема сейчас - не удается обновить или использовать файл pythonw.exe? –
Кроме того, было бы лучше включить это в вопрос, а не писать в качестве ответа. –
Я могу использовать этот код для обновления файлов на Google Диске. Моя проблема заключается в том, что после запуска этого скрипта, если я не закрываю окно IDLE, тогда файл excel на моем ноутбуке, который был обновлен только сейчас, не редактируется, и система говорит, что что-то вроде этого файла excel используется pythonw.exe ; если я закрою окно IDLE, тогда файл excel будет доступен для редактирования. – liga810
Предполагая, что вы используете 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 Диска, если вы заинтересованы.
Спасибо, к сожалению, я использую v2. Большое спасибо за помощь. Если я не смогу пройти через v2, я переключусь на v3. – liga810
Хе-хе, да, я знаю, но мне нужно что-то делать автоматически, а не вручную, поэтому мне нужно написать скрипт для выполнения работы. В любом случае, большое спасибо за ваш ответ. – liga810
да, сделайте копию по сценарию. поэтому напишите сценарий, который скопирует файл excel на диск Google. Google Drive обнаружит изменение и синхронизирует его. –
Да, но как написать скрипт? Я могу написать сценарий для вставки файла с локального диска в Google Drive, но это создание нового файла на Google Drive, поэтому, если я использую один и тот же скрипт каждый день, сценарий будет просто создавать несколько новых файлов на Google диске вместо замены старый файл с новым файлом. Я знаю, что я должен использовать что-то вроде service.files(). Update() .excecute() для обновления определенного файла, но как получить файл на локальном диске и как использовать service.files(). Update(). excecute() для обновления определенного файла локальным файлом? – liga810