我在python中创建了一个discord bot,我想为warn命令创建一个日志系统,为了设置这个,我使用了一个.csv文件,在这个文件中我写了我想要的关于用户的所有信息。
这是我第一次使用.csv,所以为了操作数据,我把文件的内容转换成列表的列表。一个子列表=表的一行。
处理后,我把每个子列表中的所有元素并排排列,中间用“;“以将其正确存储在.csv文件中。
我的问题来自于:
csvwriter = csv.writer(wfile, delimiter=";")
对于最终文件中的每个字符,使用“;“放在"so”后面,而不是“this”:(abc;def;ghi),我有这个:(a;B;c;d;......)。
所有的代码:
@commands.command()
@commands.has_any_role(765280296781742090, 765609632482721852, 882222368976670772)
async def test(self, ctx, member:discord.Member):
messages = await ctx.channel.history(limit = 1).flatten()
for each_message in messages:
await each_message.delete()
with open("ressources/logs/warn_logs.csv", 'r', newline='') as csvfile:
content = []
new_registrated = []
is_registrated = False
for line in csvfile:
line = line.split(";")
content.append(line)
for cell in content:
if cell == content[0]:
pass
else:
if int(cell[0]) == int(member.id):
is_registrated = True
cell[3] = int(cell[3])+1
cell[3] = str(cell[3])
if is_registrated == False:
new_registrated.append(str(member.id))
new_registrated.append(str(member._user))
new_registrated.append(member.nick)
new_registrated.append("1\r\n")
content.append(new_registrated)
with open("ressources/logs/warn_logs.csv", 'w', newline='') as wfile:
csvwriter = csv.writer(wfile, delimiter=";")
# for line in content:
# print(line)
# line = ";".join(line)
# print(line)
# csvwriter.writerow(line)
csvwriter.writerow("abc")
wfile.close()
csvfile.close()
我有什么:
我想要的:
我现在正在做这件事,如果有人能帮助我,我将非常感激。
注:我是法国人,我的英语并不完美,所以不要犹豫,纠正我
我竭力想:
- 未放分隔符:“;”变成了“”,
- 放置分隔符=“smth”/ =False / =无:它不工作
- 任何其他字符:“;”变成了任何其他字符
1条答案
按热度按时间mnemlml81#
writerow()
函数需要一个可迭代对象来写入一整行。将写入文件:
和
将写:
如果
line
是一个字符串列表,那么line = ";".join(line)
是错误的,line
应该直接转到writerow()
。在中使用csv
模块的要点不是考虑分隔符。同样,如果您使用的是
with open(...) as f:
,则不必关闭该文件。