python3-fdb apache docker
Posted by wnf on Friday, 17 December 2021Das Python-wsgi Programm läuft einen halben Tag ohne Probleme, doch dann kommt eine Fehlermeldung:
[ERROR] incompatible types, LP_c_short instance instead of LP_c_short instance
Das Python-wsgi Programm läuft einen halben Tag ohne Probleme, doch dann kommt eine Fehlermeldung:
[ERROR] incompatible types, LP_c_short instance instead of LP_c_short instance
Der Befehl executemany in FirebirdSQL fdb liefert in Python 3.8 den Fehler „weakly-referenced object no longer exists“.
Dehalb
aCursor.executemany(aSQL, aWerte)
ersetzen durch
aCursor.execute(aSQL, aWerte)
Mit pyperclip möchte ich einen Text ins Clipboard kopieren.
import pyperclip
def main():
aClipboard = "Dieser Text soll ins Clipboard"
print(aClipboard)
pyperclip.copy(aClipboard)
print("beendet.")
return 0
if __name__ == '__main__':
main()
Das Script liefert die folgenden Warnungen und der Text wird nicht ins Clipboard kopiert.
Dieser Text soll ins Clipboard
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:68:35:
The style property GtkButton:child-displacement-x is deprecated and shouldn't be used anymore.
It will be removed in a future version
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:69:35:
The style property GtkButton:child-displacement-y is deprecated and shouldn't be used anymore.
It will be removed in a future version
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:73:46:
The style property GtkScrolledWindow:scrollbars-within-bevel is deprecated and shouldn't be used anymore.
It will be removed in a future version
beendet.
Da ich die KDE benutze gehe ich davon aus, dass pyperclip das falsche Clipboard anspricht.
Mit **pyperclip.set_clipboard('klipper')** kann pyperclip dazu übereredet werden klipper als Clipboard zu benutzen:
import pyperclip
def main():
aClipboard = "Dieser Text soll ins Clipboard"
print(aClipboard)
pyperclip.set_clipboard('klipper')
pyperclip.copy(aClipboard)
print("beendet.")
return 0
if __name__ == '__main__':
main()
Aus der Musiksammlung im Verzeichnis PATH werden 100 zufällige Titel abgespielt.
Als MP3-Player dient mpg123 (der natürlich vorher installiert werden muss)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # import os from glob import glob import random import subprocess PATH = '/wnfdaten/Musik/' def playMp3(path): subprocess.Popen(['mpg123', '-q', path]).wait() def allMp3s(): print(PATH) result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '**/*.mp3'))] return result def main(): alle = allMp3s() anz=0 while anz<100: dn=random.choice(alle) print(anz,dn) playMp3(dn) anz = anz +1 return anz if __name__ == '__main__': main()
Literatur:
So funktioniert es: handleQL570
#!/usr/bin/env python # -*- coding: utf-8 -*- from PyQt4 import QtGui, QtCore class Window(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) self.setWindowTitle(self.tr('Document Printer')) self.editor = QtGui.QTextEdit(self) self.editor.textChanged.connect(self.handleTextChanged) self.buttonQL570 = QtGui.QPushButton('QL-570', self) self.buttonQL570.clicked.connect(self.handleQL570) self.buttonPrint = QtGui.QPushButton('Print', self) self.buttonPrint.clicked.connect(self.handlePrint) self.buttonPreview = QtGui.QPushButton('Preview', self) self.buttonPreview.clicked.connect(self.handlePreview) layout = QtGui.QGridLayout(self) layout.addWidget(self.editor, 0, 0, 1, 3) layout.addWidget(self.buttonQL570, 1, 0) layout.addWidget(self.buttonPrint, 1, 1) layout.addWidget(self.buttonPreview, 1, 2) self.beispielText() self.handleTextChanged() def beispielText(self): self.editor.clear() self.editor.setHtml(u'Vorname Name<br>Straße<br><strong>PLZ Ort</strong>') def handlePrint(self): dialog = QtGui.QPrintDialog() if dialog.exec_() == QtGui.QDialog.Accepted: self.editor.document().print_(dialog.printer()) def handlePreview(self): dialog = QtGui.QPrintPreviewDialog() dialog.paintRequested.connect(self.editor.print_) dialog.exec_() def handleQL570(self): tp = QtGui.QPrinter() # Es muss natürlich einen eingerichteten Drucker mit dem Namen geben tp.setPrinterName('QL-570') # Das Setzen der Papiergröße funktioniert nicht, # es wir die im Druckertreiber eingestellte Papiergröße verwendet # Ohne Wirkung: tp.setPaperSize( QtCore.QSizeF( 29, 62 ), QtGui.QPrinter.Millimeter ) tp.setOrientation( QtGui.QPrinter.Landscape) tp.setPageMargins(2,2,2,2, QtGui.QPrinter.Millimeter) self.editor.document().print_(tp) def handleTextChanged(self): enable = not self.editor.document().isEmpty() self.buttonPrint.setEnabled(enable) self.buttonPreview.setEnabled(enable) if __name__ == '__main__': import sys app = QtGui.QApplication(sys.argv) window = Window() window.resize(640, 480) window.show() sys.exit(app.exec_())
Literatur:
Um von Python aus Passwörter aus der KDE-Brieftasche zu lesen genügen diese paar Zeilen:
import keyring # Setzen des Passwortes keyring.set_password("ftp.wlsoft.de","wlsoft.de", "123") # Lesen des Passwortes password = keyring.get_password("ftp.wlsoft.de","wlsoft.de")
Oder hier am Beispiel eines Scripts zum Hochladen einer Datei per FTP auf diesen Server.
import keyring KEYRING_SERVICE = "ftp.wlsoft.de" KEYRING_USERNAME = "wlsoft.de" def main(): if len(sys.argv) < 2: sys.exit('Usage: %s filename' % sys.argv[0]) filename = sys.argv[1] if not os.path.exists(filename): sys.exit('ERROR: File %s was not found!' % filename) ftp_host = KEYRING_SERVICE ftp_user = KEYRING_USERNAME #Das Passwort aus Standard-Keyring lesen (unter KDE ist das kwallet) ftp_pass = keyring.get_password(KEYRING_SERVICE,KEYRING_USERNAME) if (ftp_pass==''): sys.exit('Set Keyring Password for SERVICE %s USERNAME %s' % (KEYRING_SERVICE,KEYRING_USERNAME)) ftp = FTP(ftp_host, ftp_user, ftp_pass) ftp.cwd("/downloads/htdocs/") s,n = os.path.split(filename) s = 'STOR %s' % (n) #print s ftp.storbinary(s, open(filename, 'rb')) return 0 if __name__ == '__main__': main()
Das Script wnfkameradownload.py dient zum Herunterladen von Bildern von einer Digitalkamera für das Programm wnfAlbum.
$ sudo add-apt-repository ppa:r-dev/wnfkameradownload $ sudo apt-get update $ sudo apt-get install wnfkameradownload
Das Script wnfkameradownload.py kann
Um das Script unter KDE 4.x einzubinden, muss für die Geräteüberwachung eine Aktion eingerichtet werden.
Um das Script unter Ubuntu – Gnome zu nutzen muss das Paket python-qt4 installiert sein.
Historie
26.01.2014 Version 1.12
(Das wirkt sich natürlich nur aus,
wenn mit mehreren Kameras gearbeitet wird.)
26.12.2013 Version 1.11
(gphotofs ist beim Download schneller als piggyphoto)
19.11.2013 Version 1.09
(Handys (Android) haben davon eine Menge)
17.11.2013 Version 1.08
wenn es als Unterverzeichnis vorhanden ist
ansonsten wird das gesamte Verzeichnis eingelesen.
03.11.2013 Version 1.07
01.01.2011 Version 1.04
01.12.2010 Version 1.02
Zum nachlesen
Kochbuch
$ sudo apt-get install lighttpd
$ sudo nano /etc/lighttpd/lighttpd.conf
server.modules = ( "mod_access", "mod_alias", "mod_compress", "mod_redirect", # "mod_rewrite", "mod_cgi", )
cgi.assign = ( ".py" => "/usr/bin/python" ) static-file.exclude-extensions = ( ".php", ".pl", ".fcgi", ".py" )
$ sudo mkdir /var/www/cgi-bin
$ sudo /etc/init.d/lighttpd restart
#!/usr/bin/env python # -*- coding: utf-8 -*- #http://planzero.org/blog/2012/01/26/system_uptime_in_python,_a_better_way from datetime import timedelta print "Content-Type: text/html" print print "<title>Uptime des Beaglebone Black</title>" print "<h1>Uptime des Beaglebone Black</h1>" with open('/proc/uptime', 'r') as f: uptime_seconds = float(f.readline().split()[0]) uptime_string = str(timedelta(seconds = uptime_seconds)) print(uptime_string)
Literatur:
python setup.py bdist_rpm
liefert folgenden Fehler:
building RPMs rpm -ba --define _topdir /tmp/erstellung/programm/build/bdist.linux-x86_64/rpm --clean build/bdist.linux-x86_64/rpm/SPECS/wnfkameradownload.spec rpm: -ba: Unbekannte Option error: command 'rpm' failed with exit status 1
Hier die Erklärung dazu:
Zur Beachtung in KDE4.2.x plasmoidviewer kann nur installierte Plasmoide anzeigen.
$ plasmoidviewer --version
Qt: 4.5.0
KDE: 4.2.4 (KDE 4.2.4)
Plasma Widget Viewer: 1.0
unter Suse 13.1 und KDE 4.11
plasma-windowed --version
Qt: 4.8.5
KDE: 4.11.2
Plasma-Shell: 0.1