Как я могу создать CSV-файл непосредственно на FTP-сервер с помощью Python?

1

У меня есть код для создания файла csv и вы можете загрузить его на ftp-сервер

with open(csv_file, 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=csv_columns1) #csv_columns1 is a list of value to become  as heading
    writer.writeheader()
    for data in vals['details']:# values for the header
        writer.writerow(data)
    writer = csv.DictWriter(csvfile, fieldnames=csv_columns2)#csv_columns1 is a list of value to become  as heading
    writer.writeheader()
    writer = csv.DictWriter(csvfile, fieldnames=csv_columns)#csv_columns1 is a list of value to become  as heading
    writer.writeheader()
    for data in vals['OrderLine']:# values for the header
        writer.writerow(data)
        print(os.system('pwd'))

     Output_Directory = "ftp_path_to_store_file"
     username = "ftp_user_names"
     password = "ftp_password"
     ftp_ip = "ftp_host_ip"
     a1 = 'STOR %s.csv' % (order.name)

     try:
        ftp = FTP(ftp_ip)
        ftp.login(username, password)
        ftp.cwd(Output_Directory)
        with open(csv_file, "rb") as f:
             ftp.storbinary('STOR ' + os.path.basename(csv_file), f)

но мне нужно было не создавать файл на моем компьютере. Я хочу создать файл непосредственно на ftp-сервере

Любая помощь будет оценена

  • 0
    Не записывайте его в файл ... запишите его в объект io.BytesIO ... и затем передайте ftp.storbinary этот объект ...
  • 0
    я тоже попробовал. но это показывает мне какую-то ошибку, как объект записи не имеет атрибута DictWriter. не могли бы вы показать мне, как я могу это сделать. с указанным выше кодом csv_column1 = [head1, head2, head3] csv_column2 = [head21, head22, head23] ..etc
Показать ещё 5 комментариев
Теги:
file
python-3.x
ftp

1 ответ

2
Лучший ответ

Вы можете сделать запись csv записи в объект io.StringIO а затем преобразовать вывод в объект io.BytesIO после кодирования его текстового значения в байты:

import io
csvfile = io.StringIO()
writer = csv.DictWriter(csvfile, fieldnames=csv_columns1) #csv_columns1 is a list of value to become  as heading
writer.writeheader()
for data in vals['details']:# values for the header
    writer.writerow(data)
writer = csv.DictWriter(csvfile, fieldnames=csv_columns2)#csv_columns1 is a list of value to become  as heading
writer.writeheader()
writer = csv.DictWriter(csvfile, fieldnames=csv_columns)#csv_columns1 is a list of value to become  as heading
writer.writeheader()
for data in vals['OrderLine']:# values for the header
    writer.writerow(data)
    print(os.system('pwd'))

Output_Directory = "ftp_path_to_store_file"
username = "ftp_user_names"
password = "ftp_password"
ftp_ip = "ftp_host_ip"
a1 = 'STOR %s.csv' % (order.name)

try:
    ftp = FTP(ftp_ip)
    ftp.login(username, password)
    ftp.cwd(Output_Directory)
    ftp.storbinary('STOR ' + os.path.basename(csv_file), io.BytesIO(csvfile.getvalue().encode()))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню