我编写了一个 Pydrive 脚本,它下载特定文件夹中的所有文件。
文档下载为“sampleTitle.md”,mimetype 为“text/plain”。
然后他们只是被提交并推送到我的仓库。
这是我的 pydrive 的 python 代码:
def checkFile(arg):
if arg['mimeType'] in mimetypes:
downloadFile(arg)
print('The file ' + str(arg['title']) + ' has a mimetype of ' + arg['mimeType'] + ' and will be downloaded')
return
if arg['mimeType'] in folder:
enterFolder(arg['id'])
print('The file ' + str(arg['title']) + ' has a mimetype of ' + arg['mimeType'] + ' and will be entered')
return
def enterFolder(query):
file_list = drive.ListFile({'q': '\'' + query + '\' in parents and trashed=false'}).GetList()
for file1 in file_list:
checkFile(file1)
return
def downloadFile(arg):
download_mimetype = None
download_mimetype = mimetypes[arg['mimeType']]
arg.GetContentFile(arg['title'], mimetype=download_mimetype)
print(arg['title'] + 'got downloaded')
return
import sys
sys.path.insert(1, '/Library/Python/2.7/site-packages')
from pydrive.auth import GoogleAuth
gauth = GoogleAuth()
gauth.LocalWebserverAuth() # Creates local webserver and auto handles authentication.
from pydrive.drive import GoogleDrive
mimetypes = {
# Drive Document files as plain text.
'application/vnd.google-apps.document': 'text/plain'
# etc.
}
folder = {
# Comparing for folder.
'application/vnd.google-apps.folder': 'true'
# etc.
}
# Create GoogleDrive instance with authenticated GoogleAuth instance.
drive = GoogleDrive(gauth)
# Auto-iterate through all files that matches this query
enterFolder('starfolder')
代码有效并且文件被下载。
在 google docs 中,文件的开头如下所示:
---
layout: post
title: title
---
它是我需要 jekyll 和 github 页面的 YAML 前端问题。
当我下载文件并将其推送到我的仓库时,它看起来像这样:
·---
layout: post
title: title
---
我真的不知道那个居中的点是从哪里输入的。它只出现在 github 上,并且隐藏在我所有的编辑器中。(Atom、Textwrangler、Brackets、TextEdit、VisualStudio Code)。似乎当我在编辑器中点应该在的位置按退格键时,它会删除隐藏的点。在 Nano 中,它显示为空格。
我必须以某种方式删除空格,因为它会破坏我的降价格式。有没有有效的解决办法?
编辑
我发现罪魁祸首是在文档开头设置的 BOM。我现在尝试使用 shell 命令将其删除,但我找不到一个可行的方法,我尝试了以下示例:
awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' text.md > text.md
sed '1 s/\xEF\xBB\xBF//' < text.md > text.md
它们会删除文件的完整内容,而不仅仅是 BOM。
任何人都知道我在命令行上做错了什么,因为其他人似乎都能让命令正常工作。