我想在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()
答案 0 :(得分:1)
您需要选择SD卡的目录,而不是print()
到终端,您write()
到您选择的文件。
以下是文档:https://docs.python.org/3/tutorial/inputoutput.html
编辑:在https://stackoverflow.com/a/8024254/8240691处得到了更好的回答,但查看输入/输出文档仍然值得您花些时间。