2017-11-28 5 views
0

Ich brauche Eingabeaufforderung in Python zugreifen, die derzeit verwende ichPython, wie Befehle in Python zu tun, die die in Command-Panel eingeben

import win32com.client 
from datetime import datetime 
import time 


datestring = datetime.strftime(datetime.now(), '%Y-%m-%d-%H-%M-%S') 
shell = win32com.client.Dispatch("WScript.Shell") 
def start(): 
    datestring = datetime.strftime(datetime.now(), '%Y-%m-%d-%H-%M-%S') 

    shell.run("cmd") 
    shell.AppActivate("cmd") 
    time.sleep(2) 
    shell.SendKeys('ffmpeg -y -f dshow -i video="Logitech HD Webcam C270" kamera'+datestring+'.mp4') 
    time.sleep(1) 
    shell.SendKeys("{ENTER}") 


def stop(): 
    time.sleep(2) 

    shell.SendKeys('^c') 
    time.sleep(2) 
    shell.SendKeys('exit') 
    time.sleep(1) 
    shell.SendKeys("{ENTER}") 

Ich müsste bekommen os.system Befehle wie os.system(start cmd) und andere Befehle zum Schreiben innerhalb von cmd (Befehlsanzeige).

Antwort

0

Anstatt die Eingabeaufforderung auszuführen und Programme von dort auszuführen, können Sie sofort die Programme ausführen, an denen Sie interessiert sind. Werfen Sie einen Blick auf Pythons subprocess-Modul.

Also in Ihrem Fall

import subprocess 

cmd = 'ffmpeg -y -f dshow -i video="Logitech HD Webcam C270" kamera'+datestring+'.mp4' 
subprocess.run(cmd, shell=True) 

Wenn Sie möchten, auf Anfrage starten/stoppen, dann können Sie dies tun:

import os 
import signal 
import subprocess 

cmd = 'ffmpeg -y -f dshow -i video="Logitech HD Webcam C270" kamera'+datestring+'.mp4' 
pro = subprocess.Popen(cmd, stdout=subprocess.PIPE, 
        shell=True, preexec_fn=os.setsid) 

os.killpg(os.getpgid(pro.pid), signal.SIGTERM) # Send the signal to all the process groups 

subprocess.Popen den Prozess startet, und os.killpg es zu stoppen.

Übrigens ist es "Eingabeaufforderung", nicht "Command Panel". Ich bin hier nicht pedantisch - wenn der Kontext es nicht verrät, werden viele Leute keine Ahnung haben, worauf sich "Command Panel" bezieht.

+0

Hey! Ich muss zugeben, dass Ihre Wahl viel einfacher und alles ist, aber ich brauche ein Programm, das die Aufnahme per Befehl startet und per Befehl stoppt. Deshalb wähle ich cmd, damit ich sagen konnte, wann ich aufhören sollte. –

+0

@ J.Foe Ich erweiterte meine Antwort. – vasia

+0

Es zeigt mir diesen Fehler: 'Traceback (jüngste Aufforderung zuletzt): Datei "C:/Dobot Magician/Audio_python/Py3.6/Call_and_check/record_test.py", Zeile 8, in shell = True, preexec_fn = os.setsid) AttributError: Modul 'os' hat kein Attribut 'sesid' Prozess beendet mit Exit-Code 1' –

Verwandte Themen