捕获并保存运行过程

时间:2017-11-01 22:14:58

标签: python python-3.6

我想在SD卡上捕捉“打印('录制GPS位置......')”。现在,这是直接在终端上打印我想从终端捕获这个运行时进程(p_1)并在执行时存储在SD卡上。我该怎么做?

一般来说,什么是从终端捕获和存储进程并在SD卡上存储进程的方法(注意我确实要在执行时存储进程,而不是在执行完成后)。

import sys
import os
import time
import subprocess, shlex
import signal
import serial
import psutil
from subprocess import Popen, PIPE

def recording():
    flag = 0
    ser = serial.Serial('/dev/ttyACM0', 921600, timeout=1)
    ser.flushOutput()

    # ROSBAG Recordings (Shell commands that execute the messages on the terminal)

    messages = 'rosbag record -o GPS_Position.bag dji_sdk/gps_position', 'rosbag record -o IMU_Data.bag dji_sdk/imu', 'rosbag record -o Attitude.bag dji_sdk/attitude', 'rosbag record -o Velodyne_Packets.bag velodyne_packets', 'rosbag record -o Velodyne_Points.bag velodyne_points',  # rosbag record -o Velocity.bag dji_sdk/velocity'

    while flag == 0:
        try:
            args1 = shlex.split(messages[0])  # messages[0] = rosbag record -o GPS_Position.bag dji_sdk/gps_position
            #print (args1)
            p_1 = subprocess.Popen(args1, stdout=PIPE)
            print('Recording GPS Position...')
            p_1.stdout.flush()

1 个答案:

答案 0 :(得分:1)

您需要选择SD卡的目录,而不是print()到终端,您write()到您选择的文件。

以下是文档:https://docs.python.org/3/tutorial/inputoutput.html

编辑:在https://stackoverflow.com/a/8024254/8240691处得到了更好的回答,但查看输入/输出文档仍然值得您花些时间。