Python Skript zu .exe Datei fehlerhaft?

Liebes Forum,

da ich mich mit Python-Skripts nicht so gut auskenne und ChatGPT scheinbar auch oft Fehler macht, möchte ich mich an erfahrene Benutzer werden.

Warum kann ich das folgende Skript nicht in einer EXE-Datei umwandeln? Es wandelt zwar um, aber am Ende, wenn ich das Programm öffne, loopt es hin und her. Es ist ein Programm, das RAM, CPU, GPU usw. überprüfen soll. Könnt gerne eine Überschrift zum Skript da lassen. :D.

Das Skript (Python):

import os
import platform
import psutil
import subprocess
import cpuinfo
import wmi
import logging
from datetime import datetime

logging.basicConfig(filename='wininfo.log', level=logging.DEBUG)

def get_windows_version():
  return platform.win32_ver()[1]

def get_cpu_info():
  info = cpuinfo.get_cpu_info()
  cpu_count = psutil.cpu_count(logical=False)
  cpu_arch = info['arch']
  cpu_usage = psutil.cpu_percent()

  try:
    cpu_temps = psutil.sensors_temperatures(fahrenheit=False)
  except AttributeError:
    cpu_temps = None

  return cpu_count, cpu_arch, cpu_usage, cpu_temps

def get_ram_info():
  ram = psutil.virtual_memory()
  return ram.total / (1024 ** 3), ram.used / (1024 ** 3)

def get_gpu_info():
  w = wmi.WMI()
  gpus = w.Win32_VideoController()
  gpu_info = [(gpu.Caption, gpu.AdapterRAM / (1024 ** 3)) for gpu in gpus]
  return gpu_info

def get_storage_info():
  storage = psutil.disk_usage('/')
  return storage.total / (1024 ** 3), storage.free / (1024 ** 3)

def suggest_windows_upgrade():
  current_version = int(platform.win32_ver()[1].split('.')[0])

  if current_version <= 8:
    print("Recommendation: Upgrade to Windows 10 or 11.")
    choice = input("Do you want to proceed with the upgrade? (Yes/No): ")

    if choice.lower() == 'yes':
      check_system_requirements()

def check_system_requirements():
  print("Checking system requirements...")
  # Hier kannst du die Überprüfung der RAM, CPU und GPU hinzufügen
  # Beispiel:
  # if not meet_requirements():
  #  print("Your system does not meet the requirements for the upgrade.")
  #  return

def meet_requirements():
  # Hier kannst du die tatsächliche Überprüfung der Anforderungen implementieren
  # Beispiel: return check_ram() and check_cpu() and check_gpu()
  pass

def create_log_file(path, content):
  try:
    os.makedirs(path, exist_ok=True)
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    log_file_path = os.path.join(path, f'computer_check_log_{timestamp}.txt')

    with open(log_file_path, 'w') as file:
      file.write(content)

    print(f"Log file has been successfully created: {log_file_path}")
  except Exception as e:
    print(f"Error creating log file: {e}")

# Windows Version Überprüfung
print("Debugging: Before Windows Version")
windows_version = get_windows_version()
print(f"Windows Version: {windows_version}")

# CPU Check
print("Debugging: Before CPU Info")
cpu_count, cpu_arch, cpu_usage, cpu_temps = get_cpu_info()
print(f"Number of CPUs: {cpu_count}")
print(f"CPU Architecture: {cpu_arch}")
print(f"CPU Usage: {cpu_usage}%")
print(f"CPU Temperatures: {cpu_temps}")

# RAM Check
total_ram, used_ram = get_ram_info()
print(f"Installed RAM: {total_ram:.2f} GB")
print(f"Used RAM: {used_ram:.2f} GB")

# GPU Check
gpu_info = get_gpu_info()
print("Graphics Cards:")

for gpu in gpu_info:
  print(f"- {gpu[0]} (VRAM: {gpu[1]:.2f} GB)")

# Storage Check
total_storage, free_storage = get_storage_info()
print(f"Installed Storage: {total_storage:.2f} GB")
print(f"Free Storage: {free_storage:.2f} GB")

# Windows Updates Check
def check_windows_updates():
  result = subprocess.run('powershell "Get-HotFix"', capture_output=True, text=True, shell=True)
  return 'No updates available' not in result.stdout
# ...

# Windows Updates Check
if check_windows_updates():
  choice = input("Windows updates are available. Do you want to install them? (Yes/No): ")
  if choice.lower() == 'yes':
    print("Installing Windows updates...")
    subprocess.run('powershell "Install-Module -Name PSWindowsUpdate -Force -AllowClobber"', shell=True)
    subprocess.run('powershell "Get-WindowsUpdate"', shell=True)
    subprocess.run('powershell "Install-WindowsUpdate -AcceptAll -AutoReboot"', shell=True)

# Windows Gültigkeit Check
suggest_windows_upgrade()

# Log-File erstellen
log_path = input("Enter the path for the log directory: ")
log_content = f"Windows Version: {windows_version}\n"
log_content += f"Number of CPUs: {cpu_count}\n"
log_content += f"CPU Architecture: {cpu_arch}\n"
log_content += f"CPU Usage: {cpu_usage}%\n"
log_content += f"CPU Temperatures: {cpu_temps}\n"
log_content += f"Installed RAM: {total_ram:.2f} GB\n"
log_content += f"Used RAM: {used_ram:.2f} GB\n"
log_content += "Graphics Cards:\n"

for gpu in gpu_info:
  log_content += f"- {gpu[0]} (VRAM: {gpu[1]:.2f} GB)\n"

log_content += f"Installed Storage: {total_storage:.2f} GB\n"
log_content += f"Free Storage: {free_storage:.2f} GB\n"
create_log_file(log_path, log_content)

Ein Bild davon, wie es um sich her loopt, schicke ich zu!

Danke schon einmal!

Bild zum Beitrag
Programmiersprache, Python
Batch-Befehl mit Python in Textdatei speichern?

Ich will mit Python die Ausgabe eines Batch-Befehls in einer Textdatei speichern. Im Batch-Output sind aber Zeilenumbrüche vorhanden, welche in der Textdatei als \n angezeigt werden. Der ganze Output wird somit in eine Zeile geschrieben und ist beinahe unlesbar. Wie schaffe ich es, \n in der Textdatei auch tatsächlich als Zeilenumbruch anzuzeigen?

Hier der Code:

import subprocess


result = subprocess.run(["ipconfig", "/all"], capture_output=True)


if result.returncode == 0:                                                                                                              #0 = exit code for programm_succesfully_executed


    try:
        if result.stdout is not None and result.stdout.strip():                                                                         #if output is not empty


            with open("ipconfig_output.txt", "w", encoding="utf-8",) as file:       #opening file
                file.write(str(result.stdout))                                                                                          #writing file


            print("writing done")


        else:
            print("ipconfig is empty")
    except Exception as e:
        print(f"a problem occured.\nERROR: {e}")
else:
    print(f"trouble while exeuting:\n{result.stderr}")


Code, Programmiersprache, Python
Python programm zu csv dateien funktioniert nicht?

Ich habe Code für ein python programm welches von 2 csv files pfade als input fragt, und diese dann prüft auf die ersten 2 spalten jeder reihe ob die 2 übereinstimmen. wenn dies so ist, soll die ganze spalte welche übereinstimmt von csv2 auf csv1 kopiert werden, das aber nur für die spalte die einstimmt

import os
import csv

def get_file_path(prompt):
    while True:
        file_path = input(prompt)
        if os.path.isfile(file_path):
            return file_path
        else:
            print("Fehler: Die angegebene Datei existiert nicht. Bitte geben Sie einen gültigen Pfad ein.")

def compare_csv_files():
    file1_path = get_file_path("Geben Sie den Pfad zur ersten CSV-Datei ein: ")
    file2_path = get_file_path("Geben Sie den Pfad zur zweiten CSV-Datei ein: ")

    with open(file1_path, newline='') as file1, open(file2_path, newline='') as file2:
        reader1 = csv.reader(file1)
        reader2 = csv.reader(file2)

        header1 = next(reader1)
        header2 = next(reader2)

        if header1[:2] != header2[:2]:
            print("Fehler: Die ersten beiden Spalten der CSV-Dateien stimmen nicht überein.")
            return

        rows1 = [row for row in reader1]
        rows2 = [row for row in reader2]

        output_rows = []
        for row1 in rows1:
            for row2 in rows2:
                if row1[:2] == row2[:2]:
                    output_rows.append(row2)
                    break

        if len(output_rows) == 0:
            print("Es wurden keine übereinstimmenden Zeilen gefunden.")
            return

        output_path = input("Geben Sie den Pfad zur Ausgabedatei ein: ")
        with open(output_path, 'w', newline='') as output_file:
            writer = csv.writer(output_file)
            writer.writerow(header1)
            for row in output_rows:
                writer.writerow(row)

    input("Drücken Sie die Eingabetaste, um das Programm zu beenden.")

Dieser Code fragt nach den Pfaden zu den beiden CSV-Dateien und prüft, ob die Dateien existieren. Wenn eine Datei nicht gefunden wird, wird eine Fehlermeldung ausgegeben und der Benutzer wird auf

Programmiersprache, Python, Python 3

Meistgelesene Beiträge zum Thema Python