捕获并保存 运行 个过程
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 文档。
我想在 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 文档。