Экспорт простого текста из Документов Google с помощью PYdrive имеет центрированную точку в Github
Я написал скрипт Pydrive, который загружает все файлы в определенную папку.
Документы загружаются как "sampleTitle.md" с mimetype "text/plain".
затем они просто попадают в мой репо.
Вот мой код Python для Pydrive:
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
---
Это передовая тема YAML, которая мне нужна для страниц с jekyll и github.
Когда я загружаю файл и помещаю его в репозиторий, он выглядит так:
·---
layout: post
title: title
---
Я действительно не знаю, куда входит эта центрированная точка. Он появляется только на github и скрыт во всех моих редакторах (Atom, Textwrangler, Brackets, TextEdit, VisualStudio Code). Кажется, что когда я нажимаю клавишу Backspace, где точка должна находиться в редакторе, она удаляет скрытую точку. В Nano это показано как пробел.
Я должен как-то удалить пробелы, потому что это нарушает мой формат уценки. Есть ли эффективное решение?
редактировать
Я обнаружил, что виновник - это спецификация, которая устанавливается в начале документа. Я пытаюсь сейчас удалить его с помощью команды оболочки, но я не могу найти тот, который работает, я попробовал следующее с примером:
awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' text.md > text.md
sed '1 s/\xEF\xBB\xBF//' < text.md > text.md
Они удаляют полное содержимое файлов, а не только спецификацию.
Так что кто-нибудь знает, что я делаю не так с командной строкой, потому что все остальные, кажется, заставляют команду работать.
1 ответ
Когда файл с mimetype "application/vnd.google-apps.document" загружается как "text/plain", вставляется спецификация.
Эта спецификация, по-видимому, интерпретируется как пробел в nano и · в github.
Следующая команда для удаления спецификаций работает, когда данные переименовываются.
не работает:
awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' text.md > text.md
работает на меня:
awk '{if(NR==1)sub(/^\xef\xbb\xbf/,"");print}' text > text.md