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

在Python脚本的循环中运行Bash命令,python,linux,bash,parsing,loops,Python,Linux,Bash,Parsing,Loops,我有我的这个脚本,它是为了修改我从GPS模块收集的一些数据。我运行了这段代码,但它说有语法错误,我不明白为什么会有错误,通常我使用bash命令进行解析,难道不能在Python循环中使用它吗 ** ** 提前感谢。在python中运行bash命令可以使用os.system函数,或者更推荐的是,通过subprocess.Popen。您可以在此处找到更多信息: 如果改用python特定的实现,效果会更好,如下所示: import serial ser = serial.Serial("/dev/tt

我有我的这个脚本,它是为了修改我从GPS模块收集的一些数据。我运行了这段代码,但它说有语法错误,我不明白为什么会有错误,通常我使用bash命令进行解析,难道不能在Python循环中使用它吗

**

**


提前感谢。

在python中运行bash命令可以使用
os.system
函数,或者更推荐的是,通过
subprocess.Popen
。您可以在此处找到更多信息:

如果改用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中的slice(这个
val[18:42]
)是从0索引的,它表示这是一个语法错误;文件“GPSWIFII.py”,第10行cat/home/pi/GPSWIFI.csv | grep GPGGA | cut-c19-42>GPSWIFIMODIFIED.csv您不能像那样直接运行bash命令。您需要输入并设置参数
shell=True
。您可能会发现有帮助。为什么要在开始时写一个换行符?因为我会将格式从写入更改为追加,并且所有数据将在同一个文件中以一行分隔。您知道如何通过在print>>文件中添加一个单词,使我从ntp获取的日期可以打印在“I”的前面吗>>文件,I',',',,val?
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()