捕获并保存 运行 个过程

Capture and save running process

我想在 SD 卡上捕获 "print('Recording GPS Position...')"。现在,这是直接在终端上打印我想从终端捕获这个运行时进程 (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()

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

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

编辑:这里 得到了更好的回答,但仍然值得您花时间查看 input/output 文档。