Импортировать CSV в Google Таблицы с локальной переменной в python?

#python #pandas #csv #gspread

#питон #панды #csv #gspread

Вопрос:

Моя программа загружает csv-файл с ftp-сервера, вносит изменения в форматирование, а затем я в настоящее время застрял, пытаясь загрузить его в Google листы. У меня это работает, когда я выбираю локальный файл….

В настоящее время, когда я использую переменную writer, она говорит TypeError: '_csv.writer' object is not iterable

 import paramiko import pandas as pd import csv import gspread  client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) client.connect(hostname='xxx', port='xxx', username='xxxx',  password='xxxx', allow_agent=False, look_for_keys=False)  curFile = '' sftp = client.open_sftp() sftp.put('AJTEST2.csv', 'AJTESTFILE.csv') with sftp.open('AJTESTFILE.csv', 'rb') as fl:  df = pd.read_csv(fl, sep=',')  print(str(df)) sftp.close()   # MAINPY new_rows = [] # a holder for our modified rows when we make them changes = { # a dictionary of changes to make, find 'key' substitue with 'value'  'vehicle_id': 'stock number', # I assume both 'key' and 'value' are strings  'vin': 'vehicle_id', }  reader = csv.reader(df) # pass the file to our csv reader for row in reader: # iterate over the rows in the file  new_row = row # at first, just copy the row  for key, value in changes.items(): # iterate over 'changes' dictionary  new_row = [x.replace(key, value)  for x in new_row] # make the substitutions  new_rows.append(new_row) # add the modified rows  **with open('test5.csv', 'w') as f:  # Overwrite the old file with the modified rows  writer = csv.writer(f)  writer.writerows(new_rows)**   print("done!")  print(str(writer))   gc = gspread.service_account(  filename='xxx.json') print("Connected TO GOOGLE") **gc.import_csv("my-sheet-id", writer)** print("UPLOADED")  

Я полагаю, что gspread ищет файл csv и не принимает переменные? Могу ли я использовать программу записи для записи csv-файла в локальную переменную вместо моего p? Я спрашиваю об этом, так как хочу сделать этот сервер односторонним.

Ответ №1:

Ты проходишь writer здесь мимо:

 gc.import_csv("my-sheet-id", writer)  

разве вы не хотите передать «test5.csv»?

В качестве примечания, это довольно запутанно, когда в вашем коде есть случайные звезды. Вы должны удалить их перед публикацией в SO.

Комментарии:

1. Извините. Да, я могу передать файл, который он только что создал. Но я хочу, чтобы он прошел, прежде чем он будет локально записан на ПК. Таким образом, я могу разместить это на сервере