Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为0008添加8个寄存器,并保留其余的6个寄存器_Python_Python 3.x_Csv - Fatal编程技术网

Python 为0008添加8个寄存器,并保留其余的6个寄存器

Python 为0008添加8个寄存器,并保留其余的6个寄存器,python,python-3.x,csv,Python,Python 3.x,Csv,我正在将.dat转换为csv。一切正常,但我需要为0008添加8个寄存器,其余的保持6。以下是.dat文件: 0004 | IP 0006 | IP 0008 | IP 除了没有空行 这是我的密码: logging.debug("option 1 selected") #check if file exists exists = os.path.isfile('stores.dat') if exists: print('

我正在将.dat转换为csv。一切正常,但我需要为0008添加8个寄存器,其余的保持6。以下是.dat文件:

0004 | IP

0006 | IP

0008 | IP

除了没有空行

这是我的密码:

logging.debug("option 1 selected")
        #check if file exists
        exists = os.path.isfile('stores.dat')

        if exists:
            print('creating phone book')
            with open('stores.dat', 'r') as input_file:
                #open stores.dat
                lines = input_file.readlines()
                newLines = [] # new line array
                for line in lines:

                    registers2 = 21 #for the while loop


                    while registers2 <= 30:  #while loop for selection 1, suppposed to print 6 registers for each store

                        if registers2 < 27:

                            stores = line[:4] #truncates the stores.dat after 4 chars



                            registers = stores + "\Registers" , 'Register ' + str(registers2),IP,'Store ' + stores.strip('0') + '' + ' - Register ' + str(registers2), '', "LAN (TCP)", '', '', '', '','','', '', '', '0x1'

                            newLines.append(registers)




                        registers2 = registers2 + 1

            with open('file.csv', 'w',newline='') as output_file:
                file_writer = csv.writer(output_file)
                file_writer.writerows(newLines)
                print('phonebook saved as file.csv')
        else:
            print('stores.dat does not exist')
期望输出

 0004\Registers,Register 21,IP,Store 4 - Register 21,,LAN (TCP),,,,,,,,,0x01
 0004\Registers,Register 22,IP,Store 4 - Register 22,,LAN (TCP),,,,,,,,,0x01
 0004\Registers,Register 23,IP,Store 4 - Register 23,,LAN (TCP),,,,,,,,,0x01
 0004\Registers,Register 24,IP,Store 4 - Register 24,,LAN (TCP),,,,,,,,,0x01
 0004\Registers,Register 25,IP,Store 4 - Register 25,,LAN (TCP),,,,,,,,,0x01
 0004\Registers,Register 26,IP,Store 4 - Register 26,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 21,IP,Store 6 - Register 21,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 22,IP,Store 6 - Register 22,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 23,IP,Store 6 - Register 23,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 24,IP,Store 6 - Register 24,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 25,IP,Store 6 - Register 25,,LAN (TCP),,,,,,,,,0x01
 0006\Registers,Register 26,IP,Store 6 - Register 26,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 21,IP,Store 8 - Register 21,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 22,IP,Store 8 - Register 23,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 23,IP,Store 8 - Register 23,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 24,IP,Store 8 - Register 24,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 25,IP,Store 8 - Register 25,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 26,IP,Store 8 - Register 26,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 27,IP,Store 8 - Register 26,,LAN (TCP),,,,,,,,,0x01
 0008\Registers,Register 28,IP,Store 8 - Register 26,,LAN (TCP),,,,,,,,,0x01
.csv文件的内容:

0004\Registers,Register 21,IP,Store 4 - Register 21,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 22,IP,Store 4 - Register 22,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 23,IP,Store 4 - Register 23,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 24,IP,Store 4 - Register 24,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 25,IP,Store 4 - Register 25,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 26,IP,Store 4 - Register 26,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 21,IP,Store 6 - Register 21,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 22,IP,Store 6 - Register 22,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 23,IP,Store 6 - Register 23,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 24,IP,Store 6 - Register 24,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 25,IP,Store 6 - Register 25,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 26,IP,Store 6 - Register 26,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 21,IP,Store 8 - Register 21,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 22,IP,Store 8 - Register 22,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 23,IP,Store 8 - Register 23,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 24,IP,Store 8 - Register 24,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 25,IP,Store 8 - Register 25,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 26,IP,Store 8 - Register 26,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 27,IP,Store 8 - Register 27,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 28,IP,Store 8 - Register 28,,LAN (TCP),,,,,,,,,0x01

你好@krazekidg,欢迎来到stack overflow。请尝试创建一个示例,以便我们能够理解这里的问题。不太可能有人阅读您的代码并试图理解问题,因为无法从您的解释中获得它。您的输入文件已经是csv(确切地说是dsv文件)如果将分隔符设置为|@corentilimier,则可以使用csv模块读取。我使代码更简单,并添加了output@CorentinLimier输入是一个。请添加所需的输出。
with open('stores.dat') as csvinput, open('file.csv', 'w') as csvoutput:
    csvreader = csv.reader(csvinput, delimiter="|") # Your input can be read with csv module
    csvwriter = csv.writer(csvoutput)

    # For each line of stores.dat
    for input_line in csvreader:
        if input_line[0] == "0008":
            # Create 8 registers if first field is 0008
            registers = range(21, 29)
        else:
            # Create 6 registers
            registers = range(21, 27)

        # Write one line per register per input line
        for register in registers:
            output_line =  ["{}\Registers".format(input_line[0]),
                            "Register {}".format(register),
                            line[1], #IP
                            "Store {} - Register {}".format(int(input_line[0]), register),
                            None,
                            "LAN (TCP)",
                            None,None,None,None,None,None,None,None,
                            "0x01"]
            csvwriter.writerow(output_line)
0004\Registers,Register 21,IP,Store 4 - Register 21,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 22,IP,Store 4 - Register 22,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 23,IP,Store 4 - Register 23,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 24,IP,Store 4 - Register 24,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 25,IP,Store 4 - Register 25,,LAN (TCP),,,,,,,,,0x01
0004\Registers,Register 26,IP,Store 4 - Register 26,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 21,IP,Store 6 - Register 21,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 22,IP,Store 6 - Register 22,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 23,IP,Store 6 - Register 23,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 24,IP,Store 6 - Register 24,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 25,IP,Store 6 - Register 25,,LAN (TCP),,,,,,,,,0x01
0006\Registers,Register 26,IP,Store 6 - Register 26,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 21,IP,Store 8 - Register 21,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 22,IP,Store 8 - Register 22,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 23,IP,Store 8 - Register 23,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 24,IP,Store 8 - Register 24,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 25,IP,Store 8 - Register 25,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 26,IP,Store 8 - Register 26,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 27,IP,Store 8 - Register 27,,LAN (TCP),,,,,,,,,0x01
0008\Registers,Register 28,IP,Store 8 - Register 28,,LAN (TCP),,,,,,,,,0x01