Seite 1 von 1

Programm über Windows Scheduler ausführen

Verfasst: Dienstag 5. Januar 2021, 16:21
von Hannes85
Hallo Community,

ich bin noch sehr neu hier im Forum und ein Anfänger mit mit Python. Also bittet entschuldigt wenn die Frage so schon eimal gestellt wurde, ich habe leider keine passende Lösung gefunden.

Über ein kleines Programm möchte ich in eine Excel Tabelle (.xlsm) schreiben und lesen. Das Lesen funktioniert soweit wie gewünscht und das Schreiben eigentlich auch.
Allerdings wird würde ich das Programm gerne einmal täglich laufen lassen. Soweit habe ich es auch schon im Windows Scheduler (Windows 10) eingetragen.

Wenn ich das Programm allerdings außerhalb von PyCharm ausführe (über der Scheduler oder auf die Datei "Test.py" klicke), blitzt die Konsole kurz auf. Öffne ich danach die Tabelle, ist die Testzelle (z.B. U48) allerdings nicht beschrieben.

Hier der Code dazu :
++++++++++++++++++++++++
import openpyxl
from pathlib import Path
from openpyxl.cell.cell import Cell
from openpyxl.worksheet.cell_range import CellRange

datei_pfad = Path("C:/Users/...../Test.xlsm")

wb = openpyxl.load_workbook(datei_pfad, keep_vba=True) # öffnet Zusammenfassung
ws = wb["Übersicht"] # wählt Tabelle Übersicht aus

ws['U48'] = " Neuer Test ?"

def isin_abfrage(): # Diese Funktion beinhaltet die Abfrage der ISIN

for i in range(16, 100): # bei mehr als 100 UN muss diese Zahl angepasst werden

isin = ws['U' + str(i)].value

if isin is not None:
print(isin)

isin_abfrage() # startet Funktion
wb.save(datei_pfad)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Habe ich nur einen Denkfehler oder muss ich noch etwas ändern, damit das Programm über den Scheduler oder die Datei im Explorer die Zelle beschreibt ?


Vielen Dank schon im Voraus für eure Hilfe !

PS: sollte das Problem bereits in einem anderen Beitrag gelöst sein, freue mich auch über einen Link :)

Re: Programm über Windows Scheduler ausführen

Verfasst: Dienstag 5. Januar 2021, 16:56
von darktrym
Was passiert denn wenn der Pfad korrekt angegeben ist oder hast du den für uns geschwärzt?

Re: Programm über Windows Scheduler ausführen

Verfasst: Dienstag 5. Januar 2021, 17:07
von sparrow
@Hannes85: Wie rufst du das Programm auf? Korrekt ist

Code: Alles auswählen

c:\Pfad\zur\python.exe Pfad\zum\script.py

Re: Programm über Windows Scheduler ausführen

Verfasst: Mittwoch 6. Januar 2021, 17:13
von Hannes85
darktrym hat geschrieben: Dienstag 5. Januar 2021, 16:56 Was passiert denn wenn der Pfad korrekt angegeben ist oder hast du den für uns geschwärzt?
nicht geschwärzt, einfach alles unnötige weggelassen weil ich zwei Zeilen Pfad doch etwas lang finde

Re: Programm über Windows Scheduler ausführen

Verfasst: Mittwoch 6. Januar 2021, 17:16
von Hannes85
sparrow hat geschrieben: Dienstag 5. Januar 2021, 17:07 @Hannes85: Wie rufst du das Programm auf? Korrekt ist

Code: Alles auswählen

c:\Pfad\zur\python.exe Pfad\zum\script.py
ich rufe das Programm auf, indem ich auf die Datei "Test.py" im Explorer doppelt klicke oder den Ausführen Button im Windows Scheduler verwende

Re: Programm über Windows Scheduler ausführen

Verfasst: Mittwoch 6. Januar 2021, 21:30
von sparrow
@Hannes85:
Für den Explorer: Dann ist wohl das falsche Programm verknüpft.
Für die Aufgabenverwaltung: Ich habe ja geschrieben, wie man ein Python-Programm startet. Der Befehl muss auch dort so hinterlegt sein. Und zum Testen führst du den Befehl in den Eingabeaufforderung aus.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 11:03
von Hannes85
Den Pfad zum Skript hatte ich vorher als Argument eingefügt

Wenn ich ich es so schreibe wie du beschrieben hast, schlägt mir Windows automatisch vor, den Pfad zum Skript wieder als Argument einzutragen. Ignoriere ich den Vorschlag, kommt die Meldung: "System kann den Dateipfad nicht finden"
Zusätzich habe ich die If Verzweigung sowie den Print Befehl entfernt, danach wird das Programm zwar ausgeführt aber nicht beendet und in die Excel Tabelle wird auch nicht geschrieben.

Ich habe jetzt versucht: - das Programm im Explorer über Rechtsklick "öffnen mit" Python zu starten -> kein Erfolg ( schwarze Python Shell blitzt kurz auf, aber kein Eintrg in der Tabelle)
- das Programm über Rechtsklick "Edit with IDLE 3.9" und dann in der IDLE auf "RUN" -> Fehler in Bezug auf "import openpyxl" (1.Zeile)

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 11:07
von sparrow
Ich habe doch geschrieben, dass du es in der Eingabeaufforderung starten sollst.
Bitte erkläre nicht, was dann passiert, sondern kopiere alles aus der Eingabeaufforderung (inklusive des Aufrufs) und füge es hier in einem Beitrag ein.
Copy&Paste. Kein Abtippen, kein Beschreiben.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 11:24
von Hannes85
Ich weiß leider nicht wie ich in der CMD das Programm starten kann

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:00
von __deets__
Du tippst in der Sucheingabe von Windows "CMD.EXE" und startest die. Und dann fuehrst du C:\Pfad\Zu\Python\Python.exe C:\Pfad\Zum\Skript.py aus.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:05
von Hannes85
Eingabe: C:\Users\Hannes>C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse automatisch aktualisieren\Kurse aktualisieren.py
Ergebnis: C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe: can't open file 'C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse': [Errno 2] No such file or directory

Das funktioniert leider nicht, was kann ich daran ändern ?

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:13
von __deets__
"" um den Pfad packen, weil du Leerzeichen in dem Pfad hast.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:40
von Hannes85
C:\Users\Hannes>"C:\Users\Hannes>C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse automatisch aktualisieren\Kurse aktualisieren.py"
Die Syntax für den Dateinamen, Verzeichnisnamen oder die Datenträgerbezeichnung ist falsch.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:42
von __deets__
Ich habe ja auch nicht gesagt, dass du um DAS GESAMTE DING Anfuehrungszeichen machen solltst. Das sind zwei Pfade. Nicht ein einziger. Also "" nur um den zweiten.

Ein bisschen mehr Experimentierfreude und Aufmerksamkeit beim lesen der Fehlermeldungen (ist ploetzlich anders, nix mehr mit errno, weil Python nicht mehr gestartet wird) ist schon hilfreich.

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 12:48
von Hannes85
auf diese weise hatte ich davor probiert, allerdings kam da der selbe Fehler. Ich vermute ich hatte noch ein Leerzeichen ganz am Anfang.

C:\Users\Hannes>C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe "C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse automatisch aktualisieren\Kurse aktualisieren.py"
Zugriff verweigert

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 16:41
von ArashiTok
Ich würde Python in die Umgebungsvariable packen normal macht der das doch mittlerweile bei der installation?
Und den .py anhang Python zuweisen.

Dann spart man sich das ganze mit der pfadangabe zur python.exe

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 16:54
von sparrow
@ArashiTok: Zwei Gegenargumente:
1.: Man weiß so, welchen Interpreter man ausführt
2.: In der Aufgabenverwaltung msus er das auf jeden Fall so starten.

@Hannes85: Dann musst du jetzt herausfinden, warum das nicht funktioniert.
1. Schritt: In der dem Script als erste Zeile einen print-Befehl einsetzen, der dir zeigt, ob es überhaupt gestartet wurde.
2. Schauen ob die python.exe ohne Script als Argument startet

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 18:05
von Hannes85
1. schon der Pfad zur python.exe funktioniert nicht --> Zugriff verweigert
2. Python neu installiert --> Pfad funktioniert
3. Pfad zur auszuführenden Datei angefügt --> "Module openpyxl not found"

C:\Users\Hannes>C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe
Python 3.9.1 (tags/v3.9.1:1e5d33e, Dec 7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

C:\Users\Hannes>C:\Users\Hannes\AppData\Local\Programs\Python\Python39\python.exe "C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse automatisch aktualisieren\Kurse aktualisieren.py"
Traceback (most recent call last):
File "C:\Users\Hannes\Desktop\Arbeit\Finanzen\Programme\Kurse automatisch aktualisieren\Kurse aktualisieren.py", line 1, in <module>
import openpyxl
ModuleNotFoundError: No module named 'openpyxl'

Wie geht das ? In Pycharm habe ich doch alle Module installiert

Re: Programm über Windows Scheduler ausführen

Verfasst: Donnerstag 7. Januar 2021, 19:40
von sparrow
Deshalb ist es wichtig, das Programm auf der Kommandozeile zu starten. Denn nur da bekommst du die entsprechenden Fehlermeldungen, die die Aufgabenverwaltung nicht bringen kann.

Ich kenne Pycharm nicht, weil ich ohne IDE arbeite.Wenn ich die Beiträge über Pycharme hier richtig im Kopf habe, dann legt Pycharm für jedes Projekt eine eigene Umgebung an. Informier dich über "venv" bzw. "virtualenv" bzw. "viruelle Environments." Daran liegt es.