如何交换字符串并保存

时间:2018-10-08 19:28:11

标签: python-3.x

我在保存基本修改过的文件时遇到问题,我需要替换到名为 DTC_5814_removing switch_data 的原始文件字符串中,并将其另存为一个单独的文件,我将如何做,因此这是程序的基本操作,它将打开eeprom文件,然后在两个字符串之间搜索一个字符串并将其分组,然后对数据进行计数,并根据给定的数据搜索介于两个字符串和modyfies数据,基本上代码可以工作,我想知道保存作为单独文件,文件保存功能的最佳方法是什么目前没有functin

代码如下:

import re

#checking the structures counting
file = open ("eeprom", "rb") .read().hex()
filesave = open("eepromMOD", "wb")

DTC_data = re.search("ffff30(.*)100077", file)
DTC_data_final = print (DTC_data.group(1))

#finds string between two strings in 2nd line of eeprom file

switch_data = re.search("010607(.*)313132", file)
switch_data_final = print (switch_data.group(1))

#finds string betwenn two strings in 3rd line of eeprom file


DTC_data_lenght = (len(DTC_data.group(1)))
#lenght of the whole DTC_data group

DTC_312D = re.search("ffff30(.*)312d", file)
DTC_3036 = re.search("ffff30(.*)3036", file)
DTC_5814 = re.search("ffff30(.*)5814", file)
#searching for DTC 312D

DTC_312D_lenght = (len(DTC_312D.group(1))+4)
DTC_312D_lenght_start =(len(DTC_312D.group(1)))
DTC_3036_lenght = (len(DTC_3036.group(1))+4)
DTC_3036_lenght_start =(len(DTC_3036.group(1)))
DTC_5814_lenght = (len(DTC_5814.group(1))+4)
DTC_5814_lenght_start =(len(DTC_5814.group(1)))
#confirming the lenght of the DTC table

if DTC_312D_lenght <= DTC_data_lenght and DTC_312D_lenght%4==0 :
    #If dtc lenght shorter than whole table and devidable by 4
    print("Starting DTC removal")
    #Printing for good count
    switch_data_lenght = (len(switch_data.group(1)))
    #Counting switch data table
    DTC_312D_removing = switch_data.group(1)[:DTC_312D_lenght_start] + "0000" + switch_data.group(1)[DTC_312D_lenght:]
    #Read from data group (data[:define start] + "mod to wish value" + data[define end]
    print(DTC_312D_removing)
else:
    print("DTC non existant or incorrect")

if DTC_3036_lenght <= DTC_data_lenght and DTC_3036_lenght%4==0 :
    #If dtc lenght shorter than whole table and devidable by 4
    print("Starting DTC removal")
    #Printing for good count
    switch_data_lenght = (len(switch_data.group(1)))
    #Counting switch data table
    DTC_3036_removing = DTC_312D_removing[:DTC_3036_lenght_start] + "0000" + switch_data.group(1)[DTC_3036_lenght:]
    #Read from data group (data[:define start] + "mod to wish value" + data[define end]
    print(DTC_3036_removing)
else:
    print("DTC non existant or incorrect")

if DTC_5814_lenght <= DTC_data_lenght and DTC_5814_lenght%4==0 :
    #If dtc lenght shorter than whole table and devidable by 4
    print("Starting DTC removal")
    #Printing for good count
    switch_data_lenght = (len(switch_data.group(1)))
    #Counting switch data table
    DTC_5814_removing = DTC_3036_removing[:DTC_5814_lenght_start] + "0000" + switch_data.group(1)[DTC_5814_lenght:]
    #Read from data group (data[:define start] + "mod to wish value" + data[define end]
    print(DTC_5814_removing)
else:
    print("DTC non existant or incorrect")

1 个答案:

答案 0 :(得分:0)

解决了

File_W = file.replace(switch_data.group(1), DTC_5814_removing)
File_WH = binascii.unhexlify(File_W)
filesave.write(File_WH)
filesave.close()