提问人:Elias Dierks 提问时间:4/7/2023 更新时间:4/7/2023 访问量:37
为什么我的代码会创建另一个文本文件?
Why does my code create another text file?
问:
我目前正在努力扩展我的 Python 知识,并为此编写了一个生成器。但是,我必须意识到,一旦我想从文本文件的一行中删除生成的条目,就会创建另一个文本文件,然后从中删除它。这是代码,希望有人能帮忙。此致敬意。
import discord
from discord.ext import commands
import os
import asyncio
from server import stay_alive
intents = discord.Intents.default()
intents.message_content = True
path = os.path.join(os.getcwd(), "data")
# Pfad zur Netflix-Textdatei
netflix_file = os.path.join(path, "Netflix.txt")
prime_file = os.path.join(path, "Prime.txt")
nitro_file = os.path.join(path, "Nitro.txt")
def load_data(filename):
with open(filename) as f:
data = [line.strip() for line in f]
return data
def save_data(filename, data):
with open(filename, 'w') as f:
for item in data:
f.write(f"{item}\n")
netflix_data = load_data(netflix_file)
prime_data = load_data(prime_file)
nitro_data = load_data(nitro_file)
# Discord-Bot einrichten
bot = commands.Bot(command_prefix='!',intents=intents)
@bot.command()
async def gen(ctx):
# Liste der Kategorien und Anzahl der Einträge erstellen
categories = {
"Netflix": len(netflix_data),
"Prime": len(prime_data),
"Nitro": len(nitro_data)
}
categories_str = "\n".join([f"{k}: {v}" for k, v in categories.items()])
# Nachricht an den Absender senden
channel = bot.get_channel(1092443991053697105) # ID des Kanals
await channel.send(f"{ctx.author.mention}, welche Kategorie möchtest du? Hier sind die verfügbaren Kategorien und die Anzahl der Einträge in jeder Kategorie:\n{categories_str}")
# Funktion zum Abfangen von Antworten definieren
def check(message):
return message.author == ctx.author
# Antwort des Absenders abfangen
try:
category = await bot.wait_for('message', timeout=30.0, check=check)
except asyncio.TimeoutError:
await ctx.author.send("Zeit abgelaufen, bitte versuche es erneut.")
return
# Überprüfen, ob die ausgewählte Kategorie gültig ist
category = category.content.lower()
if category not in ["netflix", "prime", "nitro"]:
await ctx.send("Ungültige Kategorie, bitte versuche es erneut.")
return
# Daten für die ausgewählte Kategorie abrufen
if category == "netflix":
data = netflix_data
filename = "Netflix.txt"
elif category == "prime":
data = prime_data
filename = "Prime.txt"
else:
data = nitro_data
filename = "Nitro.txt"
# Überprüfen, ob es Einträge für die ausgewählte Kategorie gibt
if len(data) == 0:
await ctx.send(f"Entschuldigung, es gibt keine Einträge in der Kategorie {category}.")
return
# Eine zufällige Zeile aus den Daten auswählen
import random
item = random.choice(data)
# Nachricht mit dem ausgewählten Element an den Absender senden
await ctx.author.send(item)
# Das ausgewählte Element aus den Daten entfernen
data.remove(item)
save_data(filename, data)
stay_alive()
bot.run(os.environ['Discord_Token'])
我尝试了很多,但没有任何帮助。我希望删除已经存在的文本文件的一行,以便机器人即使在重新启动后也不会恢复条目。
答: 暂无答案
评论
load_data()
save_data()