import csv
path='C:\\Users\\admin\\Desktop\\15372370.06n'
with open(path, 'r', encoding='utf-8') as f:
if f == 0:
print("警告:不能打开文件!")
else:
print("GPS导航文件打开成功!")
nfile_lines = f.readlines() # 按行读取N文件
print(len(nfile_lines))
f.close()
# # 将txt文件读入numpy数组
# datamat = np.zeros((248, 4))
# row_count = 0
# for line in len(nfile_lines):
# # 写入datamat
# line = line.strip().split(' ')
# datamat[row_count,:] = line[:]
# row_count += 1
def start_num(): ##定义数据记录的起始行
for i in range(len(nfile_lines)):
#print("第%d个字符:%s"%(i,nfile_lines[i]))
if nfile_lines[i].find('END OF HEADER')!=-1:
start_num=i+1
return start_num
n_dic_list=[]
n_data_lines_nums=int((len(nfile_lines)-start_num())/8)
print("一共%d组数据"%(n_data_lines_nums))
#第j组,第i行
for j in range(n_data_lines_nums):
n_dic = {}
for i in range(8):
data_content = nfile_lines[start_num() + 8 * j + i]
print(data_content)
n_dic['数据组数'] = j + 1
# n_dic['小行'+str(i+1)]=data_content.strip('\n')
if i == 0: # 度单个卫星数据组第一行数据,下面雷同
n_dic['卫星PRN号'] = int(data_content.strip('\n')[0:2].strip(' '))
n_dic['历元'] = data_content.strip('\n')[3:22]
n_dic['卫星钟偏差(s)'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip(
'\n')[23:41][-3:]).strip(' ')) # 利用字符串切片功能来进行字符串的修改
n_dic['卫星钟漂移(s/s)'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip(
'\n')[42:60][-3:]).strip(' '))
n_dic['卫星钟漂移速度(s/s*s)'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip(
'\n')[61:79][-3:]).strip(' '))
if i == 1:
n_dic['IODE'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[
4:22][-3:]).strip(' '))
n_dic['C_rs'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['n'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip('\n')[
42:60][-3:]).strip(' '))
n_dic['M0'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip('\n')[
61:79][-3:]).strip(' '))
if i == 2:
n_dic['C_uc'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[
4:22][-3:]).strip(' '))
n_dic['e'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['C_us'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip('\n')[
42:60][-3:]).strip(' '))
n_dic['sqrt_A'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip('\n')[
61:79][-3:]).strip(' '))
if i == 3:
n_dic['TEO'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[
4:22][-3:]).strip(' '))
n_dic['C_ic'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['OMEGA'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip('\n')[
42:60][-3:]).strip(' '))
n_dic['C_is'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip('\n')[
61:79][-3:]).strip(' '))
if i == 4:
n_dic['I_0'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[
4:22][-3:]).strip(' '))
n_dic['C_rc'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['w'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip('\n')[
42:60][-3:]).strip(' '))
n_dic['OMEGA_DOT'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip(
'\n')[61:79][-3:]).strip(' '))
if i == 5:
n_dic['i'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[4:22][
-3:]).strip(' '))
n_dic['L2_code'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['PS_week_num'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip(
'\n')[42:60][-3:]).strip(' '))
n_dic['L2_P_code'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip(
'\n')[61:79][-3:]).strip(' '))
if i == 6:
n_dic['卫星精度(m)'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
1:-4] + 'e' + data_content.strip('\n')[
4:22][-3:]).strip(' '))
n_dic['卫星健康状态'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
1:-4] + 'e' + data_content.strip('\n')[
23:41][-3:]).strip(' '))
n_dic['TGD'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
1:-4] + 'e' + data_content.strip('\n')[
42:60][-3:]).strip(' '))
n_dic['IODC'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
1:-4] + 'e' + data_content.strip('\n')[
61:79][-3:]).strip(' '))
# if i == 7:
# n_dic['电文发送时刻'] = float((data_content.strip('\n')[4:22][0] + '0' + data_content.strip('\n')[4:22][
# 1:-4] + 'e' + data_content.strip('\n')[
# 4:22][-3:]).strip(' '))
# n_dic['拟合区间(h)'] = float((data_content.strip('\n')[23:41][0] + '0' + data_content.strip('\n')[23:41][
# 1:-4] + 'e' + data_content.strip('\n')[
# 23:41][-3:]).strip(' '))
# try:
# n_dic['备用1'] = float((data_content.strip('\n')[42:60][0] + '0' + data_content.strip('\n')[42:60][
# 1:-4] + 'e' + data_content.strip('\n')[
# 42:60][-3:]).strip(' '))
# except:
# pass
# try:
# n_dic['备用2'] = float((data_content.strip('\n')[61:79][0] + '0' + data_content.strip('\n')[61:79][
# 1:-4] + 'e' + data_content.strip('\n')[
# 61:79][-3:]).strip(' '))
# except:
# pass
n_dic_list.append(n_dic)
print(n_dic_list)
with open( "C:\\Users\\admin\\Desktop"+ "\\" + "example.csv", 'w', newline='', encoding='utf-8') as f:
#csv_writer = csv.writer(f)
#writerow把列表写入同一行
#下面这个函数效果等同于
#csv_writer.writerow(n_dic.keys())
#csv_writer.writerow()
header=['数据组数', '卫星PRN号', '历元', '卫星钟偏差(s)', '卫星钟漂移(s/s)', '卫星钟漂移速度(s/s*s)',
'IODE', 'C_rs', 'n', 'M0', 'C_uc', 'e', 'C_us', 'sqrt_A', 'TEO', 'C_ic', 'OMEGA', 'C_is',
'I_0', 'C_rc', 'w', 'OMEGA_DOT',
'i', 'L2_code', 'PS_week_num', 'L2_P_code',
'卫星精度(m)', '卫星健康状态', 'TGD', 'IODC']
writer = csv.DictWriter(f, fieldnames=header)
writer.writeheader()
writer.writerows(n_dic_list)
f.close()