Croix-plate-forme sous-processus avec fenêtre masquée
Je veux ouvrir un processus en arrière-plan et d'interagir avec elle, mais ce processus doit être invisible à la fois Linux et Windows. Dans Windows, vous devez faire quelques trucs avec STARTUPINFO, alors que ce n'est pas valable dans Linux:
ValueError: startupinfo est uniquement pris en charge sur les plates-formes Windows
Est-il un moyen plus simple de créer un Popen commande pour chaque OS?
if os.name == 'nt':
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
proc = subprocess.Popen(command, startupinfo=startupinfo)
if os.name == 'posix':
proc = subprocess.Popen(command)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez réduire une ligne 🙂
STARTF_SHOWWINDOW
, vous aurez également besoin d'initialiser lewShowWindow
membre destartupinfo
à l'un desSW_*
constantes. Cette méthode s'appuie sur le programme que vous exécutez en fait en agissant sur lewShowWindow
drapeau; il n'est pas nécessaire de le faire.Juste une remarque: pour Python 2.7 - je utiliser
subprocess._subprocess.STARTF_USESHOWWINDOW
au lieu desubprocess.STARTF_USESHOWWINDOW
.subprocess.STARTF_USESHOWWINDOW
est ajouté après le Python 2.7.2.Je ne suis pas sûr que vous pouvez obtenir beaucoup plus simple que ce que vous avez fait. Vous parlez de l'optimisation de la peut-être 5 lignes de code. Pour l'argent, je voudrais juste faire mon projet et l'accepter comme une consquence de la croix-plate-forme de développement. Si vous faire un lot, puis de créer une entreprise spécialisée en classe ou d'une fonction pour encapsuler la logique et de l'importer.
Vous pouvez activer votre code dans:
mais ce n'est pas beaucoup mieux.