python - 为 0008 添加 8 个寄存器,其余为 6 个寄存器
问题描述
我正在将 .dat 转换为 csv。一切正常,但我需要为 0008 添加 8 个寄存器,其余为 6 个。这是 .dat 文件:
0004|IP
0006|IP
0008|知识产权
除了没有空行
这是我的代码:
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')
为安全起见,更改了 IP。正如您所看到的,while 循环运行了 8 次,但它应该为每个存储添加 6 个寄存器。如果你能帮助我让它能够在未来添加有 8 个寄存器的商店(所以不是一次性的)。谢谢
这是当前的输出:
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
期望的输出
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
解决方案
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)
file.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
推荐阅读
- neural-network - keras 中的 val_sample_weight 是什么?
- c# - 如何将不同的查询与投影与 C# MongoDB 驱动程序相结合
- installation - 我可以在 Ubuntu 18.04.1 上安装 bazel 吗?
- python - 窗口 10 上的最新蚊子没有运行
- php - 当我使用 json_encode 时,为什么 PHP 会四舍五入我的数字?
- hive - 我必须从下面提到的字符串中单独生成日期,因为它会在配置单元查询中每天更改
- java - 定义 createFromAsset 时 getAssets() 未显示(对于 MainActivitiy.class 以外的其他类)
- java - 不支持请求方法 POST || 春季登录
- powershell - 通过 Combobox Powershell 获取更多信息选择
- firebase - Firebase 控制台中的“item_name”在哪里?