Хотел бы печатать на выходе моего бота discord.py в каждой строке файла .csv

команда diskcord.py работает хорошо, она должна печатать случайную строку в верхнем регистре (с длиной «char») + значение, заданное переменной «значение», в течение времени x, определяемого переменной «время». Пример: .testjeg Thisisatest 5 3 выведет: XCF Этотест SDE Этотест LOP Этотест HJK Этотест SDE Этотест

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

@client.command() async def testjeg (ctx, значение, время, символ):

def random_char(char):
    return ''.join(random.choice(string.ascii_uppercase) for x in range(int(char)))

header = ["J3gged data"]
data = []



for x in range(0, int(times)):
    data = random_char(char) + f" {value}"
    print(data)
buffer = io.StringIO()
writer = csv.writer(buffer)
writer.writerow(header)
writer.writerows(data)
buffer.seek(0) #Don't know why this is here, but it worked...
await ctx.channel.send(file=discord.File(buffer, f'{value}.csv'))
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения постов в Twitter с помощью Python, Tweepy и Flair
Анализ настроения текстовых сообщений может быть настолько сложным или простым, насколько вы его сделаете. Как и в любом ML-проекте, вы можете выбрать...
7 лайфхаков для начинающих Python-программистов
7 лайфхаков для начинающих Python-программистов
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
Сертификатная программа "Кванты Python": Бэктестер ансамблевых методов на основе ООП
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ...
Создание персонального файлового хранилища
Создание персонального файлового хранилища
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это...
Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
14
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы никогда не сохраните все строки, которые вы печатаете, потому что вместо того, чтобы делать data.append, вы просто заменяете их новыми str при выполнении data = .... Итак, в конце концов, ваша переменная data представляет собой только str с последним сгенерированным текстом.

Но для того, чтобы csv работал, вам нужно, чтобы data был двумерным списком строк и столбцов, поэтому, например, [[1,2,3], [4,5,6]] as data сохранит 1,2,3 в одной строке, а 4,5,6 в другой строке.

Итак, весь код (если бы вы использовали простую open вместо логики, связанной с Discord) был бы:

import random, csv, string

def random_char(char):
    return ''.join(random.choice(string.ascii_uppercase) for x in range(int(char)))

header = ["J3gged data"]
data = []

# added these to have code runnable on itself, as well as imports in the beginning
times, char, value = 4, 7, 'test'

for x in range(0, int(times)):
    # note, how here we create list, instead of saving one value,
    # this is because you only have one column like [1] and not [1,2,3] as text I had above
    data.append([random_char(char) + f" {value}"])

with open('newfile.csv', 'w+') as f:
    writer = csv.writer(f)
    writer.writerow(header)
    writer.writerows(data)

with open('newfile.csv') as f:
    print(f.read())

Большое спасибо благодаря вашему ответу, я понял, как он хранится в CSV, и в итоге получил код, который без проблем работает с моим ботом discord.py!

Giovanni Porcaro 18.05.2022 01:00

Другие вопросы по теме