使用 Python 将 CSV 文件夹上传到 Google Sheet
Upload folder of CSV'S to Google Sheet using Python
我是 python 和 Google API 的业余爱好者。我必须创建脚本,将所有 CSV 从文件夹上传到 Google Drive as sheets。到目前为止,我有这个脚本,它使用 gspread 将一个 csv 文件上传到一个指定的 Google Sheet。我有很多这样的 CSV,我需要将它们作为 sheet 上传到 google 驱动器。我找不到处理多个 CSV 文件的解决方案。
import gspread
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
content = open('ONETTF-Projects-INFO.csv', 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiu', content)
所有信息都是关于上传一个csv文件。有人可以给我一些提示如何设法上传包含 csv 文件的文件夹,以便所有文件都保存在 Google Drive as sheets?
感谢您的帮助。
编辑:
正如@metamorporpoise 建议我修改了脚本,我非常非常接近,因为我可以看到在 google 驱动器中查看 sheet 脚本实际上正在上传我的所有 CSV 但在同一时刻正在用新的替换导入的 CSV。那是因为这些文件正在同一 sheet.
上载
import gspread
import os
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
os.chdir('/users/krzysztofpaszta/CSVtoGD')
files = os.listdir()
for filename in files:
if filename.split(".")[1] == "csv":
content = open(filename, 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiuRak9a1efQ', content)
有没有办法修改 gc.import_csv 以将这些文件导入不同的 sheet?
虽然我并不完全熟悉 gspread 包,但我知道 os 包对于遍历文件夹中的文件非常有帮助。您不需要安装 os,因为它应该已经随 Python 一起提供了。你可以像这样使用它:
import gspread
import os
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
os.chdir(FOLDER_PATH)
files = os.listdir()
for filename in files:
if filename.split(".")[1] == "csv":
content = open(filename, 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiu', content)
您需要将 FOLDER_PATH
替换为您存储 csv 的文件夹的路径,该文件夹相对于您 运行 您的 python 脚本所在的目录。 if filename.split(".")[1] == "csv":
行是为了确保脚本只尝试上传 csv 文件并忽略任何其他类型的文件。我并不完全熟悉 gc.import_csv() 命令中的第一个参数在做什么,因此如果它特定于您之前尝试上传的特定 csv,则可能会导致问题。希望这对您有所帮助!
编辑:在查看 import_csv() 函数时,我当前的代码似乎只会一遍又一遍地不断覆盖同一个电子表格。似乎您需要为每个文件创建新的电子表格,然后每次
将 file_id
作为参数传递给 import_csv()
EDIT2:尝试在 if 语句之后添加这一行:
sh = gc.create(filename.split(".")[0])
然后用 sh.id
替换当前作为 import_csv() 第一个参数的长字符串。我希望这有效!
我是 python 和 Google API 的业余爱好者。我必须创建脚本,将所有 CSV 从文件夹上传到 Google Drive as sheets。到目前为止,我有这个脚本,它使用 gspread 将一个 csv 文件上传到一个指定的 Google Sheet。我有很多这样的 CSV,我需要将它们作为 sheet 上传到 google 驱动器。我找不到处理多个 CSV 文件的解决方案。
import gspread
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
content = open('ONETTF-Projects-INFO.csv', 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiu', content)
所有信息都是关于上传一个csv文件。有人可以给我一些提示如何设法上传包含 csv 文件的文件夹,以便所有文件都保存在 Google Drive as sheets?
感谢您的帮助。
编辑: 正如@metamorporpoise 建议我修改了脚本,我非常非常接近,因为我可以看到在 google 驱动器中查看 sheet 脚本实际上正在上传我的所有 CSV 但在同一时刻正在用新的替换导入的 CSV。那是因为这些文件正在同一 sheet.
上载import gspread
import os
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
os.chdir('/users/krzysztofpaszta/CSVtoGD')
files = os.listdir()
for filename in files:
if filename.split(".")[1] == "csv":
content = open(filename, 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiuRak9a1efQ', content)
有没有办法修改 gc.import_csv 以将这些文件导入不同的 sheet?
虽然我并不完全熟悉 gspread 包,但我知道 os 包对于遍历文件夹中的文件非常有帮助。您不需要安装 os,因为它应该已经随 Python 一起提供了。你可以像这样使用它:
import gspread
import os
gc = gspread.oauth(credentials_filename='/users/krzysztofpaszta/credentials.json')
os.chdir(FOLDER_PATH)
files = os.listdir()
for filename in files:
if filename.split(".")[1] == "csv":
content = open(filename, 'r').read().encode('utf-8')
gc.import_csv('1gv-bKe-flo5FwIbt_xgCp1vNn0L0KBnpiu', content)
您需要将 FOLDER_PATH
替换为您存储 csv 的文件夹的路径,该文件夹相对于您 运行 您的 python 脚本所在的目录。 if filename.split(".")[1] == "csv":
行是为了确保脚本只尝试上传 csv 文件并忽略任何其他类型的文件。我并不完全熟悉 gc.import_csv() 命令中的第一个参数在做什么,因此如果它特定于您之前尝试上传的特定 csv,则可能会导致问题。希望这对您有所帮助!
编辑:在查看 import_csv() 函数时,我当前的代码似乎只会一遍又一遍地不断覆盖同一个电子表格。似乎您需要为每个文件创建新的电子表格,然后每次
将file_id
作为参数传递给 import_csv()
EDIT2:尝试在 if 语句之后添加这一行:
sh = gc.create(filename.split(".")[0])
然后用 sh.id
替换当前作为 import_csv() 第一个参数的长字符串。我希望这有效!