bestimmte Excel Inputs mit Python auswählen und in eine andere Excel-Datei einfügen?

Hallo zusammen,

ich würde gerne etwas Neues mit Python ausprobieren. Es geht um eine Excel-Datei, aus der ich bestimmte Einträge in eine andere Excel-Datei einfügen möchte. Wie ihr sehen könnt, möchte ich die Einträge, die einen Farbnamen enthalten, in eine andere Datei in Klammern einfügen und den Farbnamen übersetzt davor schreiben. Haben Sie eine Idee, wie ich das machen kann? Ich wäre Ihnen für jede Antwort dankbar.

import openpyxl
from openpyxl import Workbook, load_workbook
book = openpyxl.load_workbook('datei.xlsx')

result = 1
valuesK = []
i = 1

while result <= 101;
	pages = 'Sheet' + str(i)
	sheet = book.get_sheet_by_name(Sheet1)
	vK = sheet['G1': 'G2259']

	for row in vK:
		for cell in row:
			if blue in cell:
			valuesK.append('Blau (' + cell.value + ')')
			elif red in cell:
				valuesK.append('Rot (' + cell.value + ')')
			elif grey in cell:
				valuesK.append('Grau (' + cell.value + ')')
			elif black in cell:
				valuesK.append('Schwarz (' + cell.value + ')')
			elif white in cell:
				valuesK.append('Weiß (' + cell.value + ')')
			elif offwhite in cell:
				valuesK.append('Elfenbein (' + cell.value + ')')
			elif brown in cell:
				valuesK.append('Braun (' + cell.value + ')')
			elif beige in cell:
				valuesK.append('Beige (' + cell.value + ')')
			elif pink in cell:
				valuesK.append('Pink (' + cell.value + ')')
			elif yellow in cell:
				valuesK.append('Gelb (' + cell.value + ')')
			elif orange in cell:
				valuesK.append('Orange (' + cell.value + ')')
			elif green in cell:
				valuesK.append('Grün (' + cell.value + ')')
			elif turquoise in cell:
				valuesK.append('Türkis (' + cell.value + ')')
			elif purple in cell:
				valuesK.append('Violett (' + cell.value + ')')
			elif gold in cell:
				valuesK.append('Gold (' + cell.value + ')')
			elif silver in cell:
				valuesK.append('Orange (' + cell.value + ')')
			else:
				valuesK.append('Multicolour (' + cell.value + ')')



	i += 1
	result +=1

	wb = Workbook()
	ws = wb.active

	filename='dosya'

	i = 0
	for i in valuesK:
		j += 1
		ws['A' + str(j)] = i
		int(j)

wb.save('datei2.xlsx')
Computer, Microsoft Excel, programmieren, Code, Informatik, Programmiersprache, Python, Softwareentwicklung, Python 3, Data Science
WIe genau ist hier die /= Methode zu verstehen[Python]?

Hallo, ich frage mich bei dem Beispiel unten, wie die erweiterte Zuweisung in diesem Zusammenhang zu verstehen ist: Was genau wird da womit dividiert? Ich habe es mit """???""" markiert. Genauer unter der __add__ Methode.

Was die Zuweisung an sich macht, verstehe ich, heisst zB 10 /2 = 5.

Ausserdem würde ich gerne wissen, wie man das self.Einheit in den eckigen Klammern auf gut Deutsch lesen sollte: Ich verstehe Programmcode, indem ich mir Sätze baue, die mir den Code von Computersprache übersetzen. Ich weiss, dass es dazu dient, dass innerhalb der Methode die richtige Einheit benutzt werden soll, aber wie würdet ihr das in menschliche Sprache übersetzen? Sowas wie "Rechne Zahlenwert * Einheit, benutz dabei gewünschte Einheit"?

Da ich bisher noch nicht mit eckigen Klammern in Klassen zu tun hatte (lerne erst seit kurzem), weiss ich nicht, wann genau man eckige Klammern immer anwendet. Kenne das so nur von Listen.

Danke für jede Rückmeldung!

#Klasse erzeugen
class Laenge: 
    #Dictionary mit dem Namen Umrechnung erzeugen: 
    Umrechnung = {"m" : 1, "dm" : 0.1, "cm" : 0.01, "mm" : 0.001, "km" : 1000,
                 "ft" : 0.3048, "in" : 0.0254, "mi" : 1609344} #ft = Fuß, in = inches, mi = Meilen
    #__init__Methode definieren
    def __init__(self, zahlenwert, einheit):
        #Attribute definieren: Zahlenwert, Einheit
        self.Zahlenwert = zahlenwert #Gibt die Zahl an, die benutzt wird 
        self.Einheit = einheit #Sagt, welche Einheit jeweils benutzt wird
    #str Methode: Lesbare Schreibweise erzeugen, wenn Ergebnisse ausgegeben werden
    def __str__(self):
        return "{:f} {}".format(self.Zahlenwert, self.Einheit)
    # __add__ Methode: Erzeugt den Plus-Operator
    def __add__(self, other):
        z = self.Zahlenwert * Laenge.Umrechnung[self.Einheit] #Zahlenwert 1, der benutzt wird
        z += other.Zahlenwert * Laenge.Umrechnung[other.Einheit] #Anderer Zahlenwert 2, der benutzt wird
        z /= Laenge.Umrechnung[self.Einheit] """???"""
        return Laenge(z, self.Einheit)
    # __sub__ Methode: Erzeugt den Minus-Operator
    def __sub__(self, other):
        z = self.Zahlenwert * Laenge.Umrechnung[self.Einheit]
        z -= other.Zahlenwert * Laenge.Umrechnung[other.Einheit]
        z /= Laenge.Umrechnung[self.Einheit]
        return Laenge(z, self.Einheit)
    
a1 = Laenge(20, "dm")
a2 = Laenge(10, "km")
print(a1 + a2)
print(a2 + a1)
Computer, Schule, programmieren, Informatik, Python
Warum immer Sonntag? (Datum in Wochentag umrechnen Python)?

Hallo,

Warum schmeißt er mir immer ein Sonntag entgegen, egal welches Datum ich eingebe?

print("Datum als Wochentag")

Rohling = 0
Wochentagcode = 0
Monatscode = 0
yearcode = 0
Schaltjahr = False
schalterjahr2 = []
def schaltjahre_berechnung():
    schalterjahr1 = 1904
    while schalterjahr1 <= 2160:
        schalterjahr1 += 4
        schalterjahr2.append(schalterjahr1)
    return schalterjahr2

Tag = int(input("Tag: "))

Monat = int(input("Monat: "))

Jahr = int(input("Jahr: "))
letzte_zwei_ziffern_des_jahres = Jahr % 100


def Schaltjahrjahr(schalterjahr2):
    if schalterjahr2 == Jahr:
        Schaltjahr = True

    #if Schaltjahr:
        #Januar = 5
        #Februar = 1

def Monate(Monat):

    if Monat == 1:
        Monatscode = 6
    elif Monat == 2:
        Monatscode = 2
    elif Monat == 3:
        Monatscode = 2
    elif Monat == 4:
        Monatscode = 5
    elif Monat == 5:
        Monatscode = 0
    elif Monat == 6:
        Monatscode = 3
    elif Monat == 7:
        Monatscode = 5
    elif Monat == 8:
        Monatscode = 1
    elif Monat == 9:
        Monatscode = 4
    elif Monat == 10:
        Monatscode = 6
    elif Monat == 11:
        Monatscode = 2
    else:
        Monatscode = 4

    return Monatscode

def Jahrescode(letzte_zwei_ziffern_des_jahres):
    firststep = letzte_zwei_ziffern_des_jahres / 4
    secondstep = letzte_zwei_ziffern_des_jahres + firststep
    yearcode = secondstep % 7

    return yearcode

def Formel(Tag, Monatscode, yearcode):
    if Jahr < 2000:
        yearcode += 1
    Rohling = Tag + Monatscode + yearcode
    Wochentagcode = Rohling % 7
    return Wochentagcode

def Wochentage(Wochentagcode):
    if Wochentagcode == 1:
        print("Mittwoch")
    elif Wochentagcode == 2:
        print("Dienstag")
    elif Wochentagcode == 3:
        print("Mittwoch")
    elif Wochentagcode == 4:
        print("Donnerstag")
    elif Wochentagcode == 5:
        print("Freitag")
    elif Wochentagcode == 6:
        print("Samstag")
    elif Wochentagcode == 7 or Wochentagcode == 0:
        print("Sonntag")
    else:
        print("Error!")


Schaltjahrjahr(schalterjahr2)
Monate(Monat)
Jahrescode(letzte_zwei_ziffern_des_jahres)
Formel(Tag,Monatscode,yearcode)
Wochentage(Wochentagcode)

Danke

programmieren, Python
Wofür stehen die Parameter in __init__(self, ...) und super().__init__(...) in Python?

Hallo, ich lese mir in einem Buch gerade das Kapitel zu Klassen und Vererbung durch. Was ich bislang verstanden habe: Basisklassen kann man durch Tochterklassen im Stil Tochterklasse(Basisklasse) kopieren und anschliessend weiterentwickeln (Vererbung).

Dabei gibt man der Tochterklasse mit __init__(self, ...) ihren eigenen Konstruktor und damit der Codeverlauf konsistent bleibt, fügt man in der anschliessenden Zeile super().__init__( ...) hinzu. Anschliessend kann man Methoden der Basisklasse überschreiben. Bei einfachen Beispielen fand ich das nachvollziehbar.

Nun habe ich ein komplizierteres Beispiel vor, bei dem in den jeweiligen Klammern noch weitere Parameter stehen (sowohl bei dem neuen als auch alten Konstruktor), das sieht wie folgt aus:

#Tochterklasse der Basisklasse VerwalteterGeldbetrag

class AllgemeinesKonto(VerwalteterGeldbetrag):

  def __init__(self, kundendaten, kontostand):

    super().__init__(kontostand)

self.Kundendaten = kundendaten

Frage: Wofür genau stehen Werte wie diese in den Klammern, was machen sie? Gemeint sind die ab def. Da der Gesamtcode über 80 Zeilen oder so lang ist, habe ich nur diese beiden Inhalte eingefügt, um die Frage abstrakt zu halten. Was objektorientierte Programmierung ist, habe ich grob verstanden, nur sind da so viele Schritte, auf die ich als kompletter Anfänger nicht so schnell kommen würde.

Computer, programmieren, Informatik, Python, Objektorientierte Programmierung
rsync Problem?

Hallo.

Ich habe mir ein Programm mit Python geschrieben mit dem ich verschiedene Backups mittels rsync ausführen kann. Das eigentliche rsync wird dann mit subprocess ausgeführt und ich glaube es eher weniger ein Python als ein Problem mit rsync (oder mit dem was ich einstelle).

Ich starte das Backup immer von Manjaro/Linux aus. Das Problem Backup ist dann von einer NTFS Festplatte auf eine NTFS Festplatte die über NAS an der Fritzbox hängt.

Die Daten werden immer alle übertragen, wenn ich also danach die Datei-, Ordner- Menge/Größe Vergleiche passt eigentlich alles, aber ich bekomme immer zum Schluss (in der Log-Datei) folgenden Fehler:

rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender=v3.2.3]

Dadurch wird das Python Programm dann auch beendet.

Ich übergebe folgende Variablen an den subprocess:

rsync_liste = ['rsync',
               '-avvPXAhWz',
               '--stats',
               ('--log-file=' + logfile),
               '--delete',
               ('--backup-dir=' + backup_dir),
               ('--include-from=' + include_File),
               source,
               target]

Wobei logfile, backup_dir, include_File, source und target Variablen sind die auf Pfade bzw. Dateien zeigen.

Ich vermute mal das ich was mit den rsync Attributen was anders machen müsste, aber ich komm leider nicht drauf und probiere schon ziemlich lange damit rum. Bin in dem Thema leider nicht der Erfahrenste.

Die NAS-Festplatte an der Fritzbox ist in der /etc/fstab folgendermaßen gemountet:

//192.168.178.1/FRITZ.NAS/                  /mnt/Laufwerke/99_Fritz.NAS                cifs    credentials=/home/dns/.smbcredentials,vers=3.0,noserverino,uid=1000,gid=1000,x-systemd.automount,x-systemd.requ
ires=network-online.target   0 0

Würde mich sehr freuen wenn jemand eine Idee hätte woran es liegen könnte.

Vielen Dank im Voraus

Computer, Technik, Backup, Linux, IT, NAS, Python, Sync, Technologie, Manjaro
Python Socket Programmierung Error?
#Server
import socket
ip_input = input("Gib deine IP an: ")
ip_input = str(ip_input)
IP_SERVER = ip_input
DISCONNECT_MESSAGE = "!DISCONNECT"
def start():
  server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server.bind( (IP_SERVER, 5050) )
  print("Server gestartet")
  server.listen()
  conn, addr = server.accept()
  print(f"Client with IP {conn} connected")
  while True:
    msg = server.recv(1024)
    msg.decode("utf-8")
    print(f"Message: {msg}")
    if msg == DISCONNECT_MESSAGE:
      server.close()
      conn.close()
if __name__ == "__main__":
  start()
#Client
import socket
def start():
  server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server.connect( ("192.168.1.100", 5050) )
  while True:
    msg = str(input("Your Message: "))
    msg = msg.encode()
    server.send(msg)
    answer = server.recv(1024)
    answer = answer.decode("utf-8")
    print(f"Antwort: {answer}")
if __name__ == "__main__":
  start()
#Error

Gib deine IP an: 192.168.1.100

Server gestartet

Client with IP <socket.socket fd=372, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.1.100', 5050), raddr=('192.168.1.100', 60324)> connected

Traceback (most recent call last):

 File "c:\Users\User\OneDrive\Python\Server_2.py", line 26, in <module>

  start()

 File "c:\Users\User\OneDrive\Python\Server_2.py", line 17, in start

  msg = server.recv(1024)

OSError: [WinError 10057] Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde

Computer, Netzwerk, programmieren, Informatik, Python, Python 3
Python Socket geht nicht?

Moin,

mein Client Code stürzt immer ab.

# Server Code
import socket


class txt_chat:
    def __init__(self):
        self.IP_SERVER = socket.gethostbyname(socket.gethostname())
        self.DISCONNECT_MESSAGE = "!DISCONNECT"


    def start(self):
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.bind( (self.IP_SERVER, 5050) )
        print("Server gestartet")
        server.listen()
        conn, addr = server.accept()
        print(f"Client with IP {conn} connected")


        while True:
            msg = server.recv(1024)
            msg.decode("utf-8")
            print(f"Message: {msg}")


            if msg == self.DISCONNECT_MESSAGE:
                server.close()
                conn.close()


txt = txt_chat()
txt.start()

# Client Code (Der nicht funktioniert)

import socket


class txt_chat:
    def start():
        server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server.connect( ("192.168.1.14", 5050) )


        while True:
            msg = str(input("Your Message: "))
            msg = msg.encode()
            server.send(msg)


            answer = server.recv(1024)
            answer = answer.decode("utf-8")
            print(f"Antwort: {answer}")


txt = txt_chat()
txt.start()

#Error
Traceback (most recent call last):
  File "C:\Users\User\OneDrive\Python\client2.py", line 18, in <module>
    txt.start()
TypeError: start() takes 0 positional arguments but 1 was given
Computer, programmieren, Informatik, Python

Meistgelesene Beiträge zum Thema Python