在Python脚本中循环运行Bash命令

2 投票
1 回答
4196 浏览
提问于 2025-04-18 16:50

我有一个脚本,是用来修改我从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开始计数的。

撰写回答