.bat → .py und Desktop → .zip

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
timm4444
User
Beiträge: 51
Registriert: Samstag 1. August 2020, 14:11

Hi Leute,
ich arbeite an einem Verwaltungs-/Kontrollprogramm
ich habe zwei Fragen:

1. Ich habe folgendes batch Script:

Code: Alles auswählen

chcp 1252 >nul
for /f "tokens=1,* delims=:" %%a in ('netsh wlan show profiles ^| findstr Profil') do call :showprofile "%%b"
goto :eof
:showprofile
set "name=%~1"
set "name=%name:~1%"
for /f "tokens=1,* delims=: " %%c in ('netsh wlan show profile name^="%name%" key^=clear ^| findstr /i "inhalt"') do echo '%name%': %%d
und weiß nicht wie ich das Output in Python als Liste bekomme.(Ich möchte den Code im Pythonscript auführen)

2.
Ich möchte den Desktop für Backup zwecke als zip archiv speichern. (Auch per python script)

Danke im vorraus und einen schönen Abend.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Warum wilslt du das Script aufrufen und führst die befehle nicht einfach in Python aus?
Ich find es etwas seltsam, eine .bat-Script aus einer Script-Sprache heraus aufzureufen, dessen Komplexität doch eher überschaubar ist.
Ansonsten ist die Antwort: externe Prgramme startet man mit dem Subprocess-Modul.

Das mit deinem Desktop und .zip verstehe ich nicht. Für das Lesen und Schreiben von .zip-Dateien gibt es das ZipFile-Modul.
timm4444
User
Beiträge: 51
Registriert: Samstag 1. August 2020, 14:11

Ja, danke für die Antwort

2.: Ich probiere es morgen nochmal aus. Ich habe die Fehlermeldungen gerade nicht parad, weil ich das Programm schon gelöscht habe.
1.: Es soll EINE exe sein und ich blicks wirklich nicht wie ich mehrere Dateien in eine exe bekomme. Deswegen will ich es direkt aus dem Python code ausführen, mit subprocess.*** oder os.system, oder ähnliches
Benutzeravatar
Codroid
User
Beiträge: 5
Registriert: Donnerstag 10. März 2022, 12:30
Kontaktdaten:

@tim4444:

Python ist als Interpreter-Sprache generell nicht dafür gedacht in einer .EXE zu enden. Falls du das allerdings doch unbedingt möchtest, kann ich dir Pyinstaller ans Herz legen: https://pyinstaller.readthedocs.io/en/stable/index.html

Dieses Tool wandelt dein Python Programm mit allen wichtigen Dateien die dazu gehören in eine 'exe' um. Schau dazu auf jeden Fall mal in die Documentation oder in ein Tutorial.
Wichtiger Hinweis: Bei der exe handelt es sich nicht um eine klassische compilierte Datei. Stattdessen wird eine virtuelle Pythonumgebung gestartet, in der das Programm ausgeführt wird. Der Unterschied ist so gut wie nicht sichtbar, weil es funktioniert. Allerdings ist es faktisch natürlich einer. Dies merkt man auch in der Ausführungszeit, die deutlich langsamer ist, als eine 'echte' .exe oder eine .py.

Dennoch ist es eine gute Alternative, gerade wenn man mal Code für Personen schreibt, die keine Ahnung von Python haben und sich schwer tun, Python und all seine Abhängigkeiten einzurichten.
Codroid ist eine Programmierschule in der das praktische Programmieren mit Python unterrichtet wird. Falls du Interesse hast, dann schreibe gerne eine PN oder email.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Codroid hat geschrieben: Donnerstag 10. März 2022, 15:04 Dies merkt man auch in der Ausführungszeit, die deutlich langsamer ist, als eine 'echte' .exe oder eine .py.
Wie kommst du darauf, dass die Ausfuehrungszeit von Python-Code in dieser Form langsamer waere als sonst? Das der Python-Bytecode langsamer interpretiert wuerde, halte ich fuer falsch. Ggf. hoehere Startup-Kosten sind natuerlich eine andere Frage.
Benutzeravatar
Codroid
User
Beiträge: 5
Registriert: Donnerstag 10. März 2022, 12:30
Kontaktdaten:

__deets__ hat geschrieben: Donnerstag 10. März 2022, 15:17 Wie kommst du darauf, dass die Ausfuehrungszeit von Python-Code in dieser Form langsamer waere als sonst? Das der Python-Bytecode langsamer interpretiert wuerde, halte ich fuer falsch. Ggf. hoehere Startup-Kosten sind natuerlich eine andere Frage.
Die Ausführungszeit des reinen Python-Codes natürlich nicht. Allerdings dauert, wie du erwähnt hast, der Startup der virtuellen Umgebung durchaus gerne mal ein paar Sekunden. Das kann minimiert werden, indem eine erstellte Ordnerstruktur über den PyInstaller einer einzelnen EXE vorgezogen wird, aber die ursprüngliche Maßgabe war ja eine einzelne EXE. In diesem Falls merkt man den Startup leider deutlich.
Codroid ist eine Programmierschule in der das praktische Programmieren mit Python unterrichtet wird. Falls du Interesse hast, dann schreibe gerne eine PN oder email.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Es ist aber nicht irgend ein Starten einer virtuellen Umgebung, die da Zeit kostet. Die one-file-exe ist vor allem ein Archiv, das alle relevanten Daten (Script, Module, Interpreter) enthält. Und was da Zeit kostet ist das entpacken dieses Archivs in ein temporäres Verzeichnis.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na das ist schon vergleichbar mit einem virtuellen environment, das ist ja der Begriff in der Pythonwelt. Ob der nun besonders geschickt gewählt ist, steht auf einem anderen Blatt.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Grundsätzlich richtig.
Mir ging es darum, dass sich der Beitrag so liest, als würde das Starten der virtuellen Umgebung pauschal so lange dauern. Und das ist es ja nicht. Deshalb stimmt die Ausführung, dass die Option als nicht one-file-exe schneller geht - aber auch da wird eine virtuelle Umgebung gestartet.

Da ging es mir nur um die Differenzierung, weil ja gerade sehr viele Neulinge eine .exe erstellen wollen und so vielleicht den Vorgang falsch verstehen bzw. den Begriff des Startens einer virtuellen Umgebung für "langsam" halten.
Antworten