Warum wird eine weitere Textdatei erstellt?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ValleTheDev
User
Beiträge: 1
Registriert: Donnerstag 6. April 2023, 21:07

Hallo liebe Community,
ich arbeite gerade an einem Generator um ein wenig mehr über Python zu erfahren. Allerdings erstellt mein Code beim generieren eine weitere Textdatei obwohl er eigentlich nur aus der vorhanden eine Zeile löschen soll. Das ist mein Code im moment.
LG

Code: Alles auswählen


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'])








Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Die Dateipfade bei load_data und save_data sind unterschiedlich.
Antworten