【发布时间】:2019-10-20 17:13:14
【问题描述】:
我编写了一个简单的脚本来将 .docx 文件上传到我的 GoogleDrive 帐户。它完美地工作,除了文件..身份验证工作,上传文件工作。我在编码时遇到了一些问题,但现在使用 Latin-1 我可以上传文件而不会出现任何错误。但是上传之后,只有一个Untitled Document,里面有这个内容:
[Content_Types].xml l"%3 ^i7+ %p)O 5}nH" t4Q+ |T\y _rels/.rels jH[{ l0/% word/_rels/document.xml.rels }-;} PB [^^l :>S!?p (!O>z word/document.xml )Zb#~J K{N$ 7R'~/ $]t# V-wZ TMco %NPB5 ~e!(m zJSC aPdO4 Jr#Cv l%|Y AxQT;K3[ word/theme/theme1.xml p{{<F! :@q" ?~|f hNC- 055B jf;a ssFb dZ#QZn: ]{,n t}Vz}1 !(~X "(<Ik^> o[HD kW:A word/settings.xml rZiidm &sY5 \w'5>X ^JL\ I'I6 9FVM v8:y- o9E1G "ogH::nM word/fontTable.xml WkU+ PlQ(!IX(* +>_ze|PXPD OJK ?eK #83> word/webSettings.xml Bk"15i I?| RjRlq docProps/app.xml X2<$ I3S.u docProps/core.xml PnQ d\l2 ) C5 $Tehk J06t UUA5iQ 10Tse >yx\-P word/styles.xml IPL0 U&dz2 5&{K 5IwM ,x9fY( fMNF< {2bjkrj G!vMD -TA{ ~TAG 0Epr 9F{7w x0-d x^(G ynL" fl9g2z Z{Jtx [z^| Q)aaT2X )aD[ qfaT z#B^ -iwJ x_}[ I]Qx3 eTHA cTHA py}) t /5DyK hnB_ )5.[ %5.[ /5.[ eKmR )5.[ CfmmV RyxS%u u}nY xegY' &m]n [Content_Types].xmlPK _rels/.relsPK word/_rels/document.xml.relsPK word/document.xmlPK word/theme/theme1.xmlPK word/settings.xmlPK word/fontTable.xmlPK word/webSettings .xmlPK RjRlq docProps/app.xmlPK docProps/core.xmlPK word/styles.xmlPK
如何使脚本处理 .docx 格式?我读到 .docx 文件实际上是 zipfiles,这是真的吗?
还有一个问题: 如何将文件上传到特定的 GoogleDrive 文件夹中?我必须在我的 GoogleDrive-API 项目中指定这个吗?
提前谢谢:)
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
import os
g_login = GoogleAuth()
g_login.LocalWebserverAuth()
drive = GoogleDrive(g_login)
test = "Path to my BA_UploadTest.docx"
with open(test, "r", encoding="Latin-1")as file:
fn = os.path.basename(file.name)
file_drive = drive.CreateFile({'BA_UploadTest.docx': os.path.basename(file.name)})
file_drive.SetContentString(file.read())
file_drive.Upload()
print('File upload successful!')
【问题讨论】:
-
“我在编码时遇到了一些问题,但现在使用 Latin-1 我可以上传文件而没有任何错误” - 不是真的,看看你的结果。在上传之前打印
file.read()以查看您真正发送的内容。另外,您发布的代码已经破坏了缩进,发布代码中的file.read在with之外。 -
另外,您是否尝试过任何其他文件,例如简单的文本文件?可能 SetContentString 实际上只是设置 text 文件的内容,而文件的类型在其他地方设置。
-
不要看格式请 :D 我只是没有正确复制代码。但你是对的,file.read() 是无。我用一个简单的txt文件试了一下。它也作为无标题上传,但内容是正确的
-
所以 SetContentString 也不适用于 txt 文件
-
哦,对不起,如果你这样做
file.read(),你需要保存它的内容,因为它可以通过文件两次。我的错。 |但是:正如我所说,它设置文件 content 并且谷歌驱动器不查看扩展名。您需要了解如何设置文件类型。
标签: python file-upload scripting google-drive-api