Diverse Fragen zu verschiedenenen Problemen
Verfasst: Freitag 22. Januar 2021, 00:44
Schönen guten Tag Ich hätte ein paar Fragen zu verschiedenenen Anwendungfällen ( Ich würde da gerne eine zweite Meinung zu hören)
Fall 1 :
Ich habe an einem anderen Speicherort Datein die Ich in einem anderen Ordner kopieren möchte jedoch kann es sein das die Datei vorhanden ist aber auf einem anderen stand daher wird in dem Fall die größe der Dateien ermittelt:
Frage kann Ich mir das shutil.copy(str(wetterstation_datei), str(datenbestand_datei)) unter der if Abfrage sparen und einfach raise FileNotFoundError dahin schreiben da in dem Fall
ja genau die gleichen Befehle dort ausgeführt werden ... da man sich ja nicht wiederholen soll?
Fall 2:
Ich habe möchte eine Excel Datei bearbeiten die bereits offen ist was in der Regel zu einer Exception führen würden.Mein Gedanke ist nun folgender Ich möchte das mein Programm ohne eine interaktion des Nutzers auskommt und möchte die Datei schließen und erneut versuchen die Datei zu bearbeiten.
Frage was haltet ihr von so einer Lösung?
Fall 3:
Was haltet ihr von verschachtelten try -except Blöcken und warum sollte man diese nicht verwenden ?
Ich freue mich auf eure Antworten
Fall 1 :
Ich habe an einem anderen Speicherort Datein die Ich in einem anderen Ordner kopieren möchte jedoch kann es sein das die Datei vorhanden ist aber auf einem anderen stand daher wird in dem Fall die größe der Dateien ermittelt:
Frage kann Ich mir das shutil.copy(str(wetterstation_datei), str(datenbestand_datei)) unter der if Abfrage sparen und einfach raise FileNotFoundError dahin schreiben da in dem Fall
ja genau die gleichen Befehle dort ausgeführt werden ... da man sich ja nicht wiederholen soll?
Code: Alles auswählen
for file in os.listdir(PFAD_WETTERSTATION):
wetterstation_datei = os.path.join(PFAD_WETTERSTATION, file)
datenbestand_datei = os.path.join(datenbestand_pfad, file)
try:
if os.path.getsize(wetterstation_datei) != os.path.getsize(datenbestand_datei):
shutil.copy(str(wetterstation_datei), str(datenbestand_datei))
except FileNotFoundError:
shutil.copy(str(wetterstation_datei),str(datenbestand_datei))
Fall 2:
Ich habe möchte eine Excel Datei bearbeiten die bereits offen ist was in der Regel zu einer Exception führen würden.Mein Gedanke ist nun folgender Ich möchte das mein Programm ohne eine interaktion des Nutzers auskommt und möchte die Datei schließen und erneut versuchen die Datei zu bearbeiten.
Frage was haltet ihr von so einer Lösung?
Code: Alles auswählen
import os
import pandas as pd
from win32com.client import Dispatch
def messdaten_in_datenbank(file, messdaten_ueberarbeitet):
"""
Die überarbeitetenden Daten werden wieder in die Datei geschrieben
Sorgt dafür das kein neues Arbeitsblatt erschaffen wird:
writer.sheets = {sheet.title: sheet for sheet in writer.book}
:param file: Pfad zu den Datein
:param messdaten_ueberarbeitet:Daten mit NaN
:return:
"""
versuche = 3
for zaehler in range(versuche):
try:
sheetname = str(os.path.basename(file)).split(".")[0]
with pd.ExcelWriter(file, engine="openpyxl", mode="a") as writer:
writer.sheets = {sheet.title: sheet for sheet in writer.book}
messdaten_ueberarbeitet.to_excel(writer,
sheet_name=sheetname,
startrow=2,
startcol=4,
header=None,
index=None,
float_format="%.1f")
except PermissionError:
if zaehler < versuche - 1:
print(f"{file} ist noch geöffnet einen Augenblick bitte!")
excel_datei_schliessen()
continue
else:
raise
break
def excel_datei_schliessen():
excel = Dispatch("Excel.Application")
excel.Visible = False
excel.DisplayAlerts = False
workbook = excel.Workbooks
workbook.Close()
excel.Quit()
def main():
messdaten_in_datenbank(file="test.xlsx", messdaten_ueberarbeitet=pd.Series(1, 2, 3))
if __name__ == "__main__":
main()
Fall 3:
Was haltet ihr von verschachtelten try -except Blöcken und warum sollte man diese nicht verwenden ?
Code: Alles auswählen
import xlrd
import pandas as pd
import sys
neue_daten_pfad = (r"C:\Users\Marcel\PycharmProjects\Marcel Klimastatistik\Datenbestand\KLIMA16.XLS")
def test(pfad):
#neue_daten = "Test"
try :
#1ter Versuch
try:
neue_daten = pd.read_excel(
pfad,
sheet_name="Mai",
skiprows=8
)
return neue_daten
except xlrd.biffh.XLRDError:
print("Mai ist nicht vorhanden es wird nun mit einem Leerzeichen versucht!")
#2ter Versuch
try:
neue_daten = pd.read_excel(
pfad,
sheet_name="Mai ",
skiprows=8
)
return neue_daten
except xlrd.biffh.XLRDError:
raise
except:
print("Leider nicht vorhanden")
sys.exit(-1)
test(neue_daten_pfad)
Ich freue mich auf eure Antworten