在Python脚本中循环运行Bash命令
我有一个脚本,是用来修改我从GPS模块收集的一些数据的。我运行这个代码时,出现了语法错误,但我不明白为什么会出错。通常我用那个bash命令来解析数据,难道不能在Python循环中使用吗?
**
import serial
import struct
ser = serial.Serial("/dev/ttyUSB0", 4800, timeout = 1)
file = open("/home/pi/GPSWIFI.csv", "w")
file.write('\n')
for i in range(0,5):
val = ser.readline();
print >> file ,i,',',val
cat /home/pi/GPSWIFI.csv | grep GPGGA | cut -c19-42 >GPSWIFIMODIFIED.csv
file.close()
**
谢谢大家的帮助。
1 个回答
2
在Python中运行bash命令可以用 os.system
这个函数,或者更推荐使用 subprocess.Popen
。你可以在这里找到更多信息:
https://docs.python.org/2/library/subprocess.html#popen-constructor
如果你能使用Python特有的方法,那会更好,比如这样:
import serial
ser = serial.Serial("/dev/ttyUSB0", 4800, timeout = 1)
file = open("/home/pi/GPSWIFIMODIFIED.csv", "w")
file.write('\n')
for i in range(0,5):
val = ser.readline();
if val.find("GPGGA")==-1: continue
print >> file ,i,',',val[18:42]
file.close()
需要注意的是,在Python中切片(比如这个 val[18:42]
)是从0开始计数的。