das Öffnen eines Dokumente mit dem Standardprogramm des Betriebsystems Linux Kubuntu, funktioniert bei mir ohne Probleme.
Nun möchte ich mit python, von Rechnungen Positionen in einer Tabelle ausgeben lassen, gleichzeitig wird das dazugehörige PDF-Rechnungsdokument geöffnet.
Soweit funktioniert das schon mal bei mir.
Nun komme ich zu dem Punkt, wo es hakt.
Wenn ich die Tabelle mit den Rechnugspositionen schließe, möchte ich das PDF-Dokument auch über python-Code schließen, um mit der nächsten Rechnung weiterzumachen. Sonst wird für jedes neue PDF-Dokument ein neues Fenster geöffnet und das kann sehr schnell unübersichtlich werden.
Zum Öffnen von Dokumenten, verwende ich dies:
Code: Alles auswählen
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import os
import platform
class System(object):
def __init__(self):
"""
Ermittle das Betriebssystem.
"""
self.system = platform.system()
self.platform = platform.platform()
def filestarter(self):
"""
Ermittlung und Ausgabe des Programmstarters.
"""
try:
return {'Windows': 'start',
'Linux': 'xdg-open',
'Darwin': 'open'
}[platform.system()]
except KeyError:
raise RuntimeError('Für Ihr Betriebssystem\n%s\n \
konnte kein passender Starter ermittelt werden!' % platform.platform())
def system(self):
"""
Ausgabe des Betriebssystem.
"""
return self.system
def system_platform(self):
"""
Ausgabe der Betriebssystem-Platform.
"""
return self.platform
class OpenFile(object):
"""
Überprüfung des Betriebssystem und Ausgabe von Dokumenten mittels Programmstarters..
"""
def __init__(self, files):
if type(files) == str:
files = [files]
try:
default_program = System().filestarter()
self.proc_start_pid = os.getpid()
except RuntimeError as e:
print(e)
print('\nÖffnen Sie zum Editieren der Datei einen Texteditor.')
return
for file in files:
print('Datei %s wird mit dem Standardprogramm\n \
Ihres Betriebsystem zum Editieren geöffnet!' % file)
self.doc_process = subprocess.Popen([default_program, file])
self.process_pid = self.doc_process.pid
self.doc_process.wait()
if __name__ == '__main__':
S = System()
system = S.system
platform = S.platform
output = 'Betriebssytem: {}\nPlatform: {}'.format(system, platform)
print(output)
file = '/pfad/zu/datei.pdf'
p = OpenFile(file)
print('Programm_PID', p.proc_start_pid)
print(Prozess_PID', p.process_pid)
Grüße Nobuddy