时隔两年后再写python

1 篇文章 0 订阅
1 篇文章 0 订阅

时隔两年后再写python,感觉还是有些不同的。

废话不多说,直接上代码(Talk is cheap, Show me the code--- Linus Torvalds)

#open a input file
f1 = open("/home/allensh/MJ/python_test/Config.raw","r")
f2 = open("/home/allensh/MJ/python_test/result.c","w")
f2.write("const struct{\n unsigned short obj_type;\n unsigned short obj_instance;\n unsigned short obj_length;\n unsigned char reg_value[256];\n}mxt_reg_table[]={\n")
# for line in f1.readlines():
#     for count in range(3):
#         f2.write('0x'+line[count*5:(count+1)*5])
    # if line[]
total_count = 0
for index, lines in enumerate(f1):
    total_count += 1
total_count = total_count - 1
print(total_count)
f1.close()
f1 = open("/home/allensh/MJ/python_test/Config.raw","r")
for c,line in enumerate(f1.readlines()):
    if c< total_count:
        f2.write('  {0x')
    for i,data in enumerate(line):
        if i != 14:
            if i !=  len(line)-1:
                if data.isspace():
                    f2.write(',0x')
                else:
                    f2.write(data) 
        else: 
            f2.write(',{0x')
            # f2.write(data)  
    if c< total_count:    
        f2.write("}},\n")
    # else:
    #     f2.write("\n")
f2.write("};\n")
f2.close()
# f3 = open("/home/allensh/MJ/python_test/result.c","r")
# for line in f3.readlines():
#     line = "{"+line[15]
f1.close()
# f3.close()

# print(dir(str))

这段代码的功能是是将f1文件的十六进制的参数转换成C/C++可以用的数据结构。从代码可以看出我是改了又改的,里面很多注释我没有删掉,我想是有帮助的。再看两年前我在高手指点下写的代码:


# print pow(10.0, (127.0/20.0))/1000000.0 / (5. / 256)

f1 = open("Config.raw")
f2 = open("result1.c", "w")
# f3 = open("temp.txt", "w")
i = 4
linedata = ""

f2.write("\n")
f2.write("\n")
f2.write("const struct {\n")
f2.write("    unsigned short obj_type;\n")
f2.write("    unsigned short obj_instance;\n")
f2.write("    unsigned short obj_length;\n")
f2.write("    unsigned char reg_value[256];\n")
f2.write("} mxt_reg_table[] = {\n")



for line in f1.readlines(): 
	if(i):
		i = i - 1
		continue
	line = line.strip("\n")
	# print line
	line = "{0x" + line[:14] + ",{" + line[14:] + "}},"
	# print line
	line = line.replace(" ", ", 0x")
	# print line
	line = line.replace(",{, ", ", {")
	# print line
	line = "    " + line + "\n"
	f2.write(line);
f2.write("};\n")


f1.close()
f2.close()
# f3.close()

明显可以看出,这里更加舒服些,用到了str.replace函数,这是高手指点的精妙之处,我这次再写有意避免了这和方法。

最后说点有用的吧,我是在菜鸟教程上一步一步学习的,http://www.runoob.com,接下来将继续学习

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值