для многократного значения цикла - PullRequest
0 голосов
/ 13 ноября 2018

Мой скрипт ниже:

import xlsxwriter
import subprocess

workbook = xlsxwriter.Workbook('demo.xlsx')
worksheet = workbook.add_worksheet('NMOC')
bold = workbook.add_format({'bold': True})

 # Write some data headers.
worksheet.write('A1', 'RNC', bold)
worksheet.write('B1', 'CELL', bold)
for line in open('/root/Desktop/Scripting/Update_Table/eaw/test.txt'):

alias = line.rstrip("\n").split(';')
print(alias)

# Start from the first cell. Rows and columns are zero indexed.
row = 1
col = 0

for rnc, cell in (alist):
   worksheet.write(row,col,  rnc)
   worksheet.write(row,col + 1, cell)
   row += 1
workbook.close()

Я использую версию Python 3.5.Это ошибка, которую я получаю:

['BSC19', 'TS9001']
['BSC19', 'TS555']
Traceback (most recent call last):
  File "test.py", line 53, in <module>
    for rnc, cell in (alias):
ValueError: too many values to unpack (expected 2)

Что не так в моем коде?

[root @ nocjobs eaw] # cat test.txt

BSC19;TS9001
BSC19;TS555

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Если вы имели в виду line = "cat myfile BSC19;TS9001 BSC19;TS555" в своем вопросе, то проблема в том, что в alist есть это, что будет ['cat myfile BSC19', 'TS9001 BSC19', 'TS555'], то есть список из 3 пунктов.

for rnc, cell in (alist): похоже на присваивание rnc, cell = alist, что означает, что он ожидает, что alist будет иметь две вещи:

Полагаю, вам нужно исправить line.rstrip( ).split(';'), но я не уверен, какой ожидаемый формат данных содержится в testtt.sh файле.

0 голосов
/ 13 ноября 2018

Могу поспорить, что проблема здесь -> for rnc, cell in (alist):

Поскольку на некоторой итерации (может быть, даже на первой) переменная alist содержит только одно значение, но вы пытаетесь распаковать его в tuple(rnc, cell).

Как я понял, вы хотите сделать что-то вроде этого:

row = 1
for line in open('test.txt'):
    alist = line.rstrip("\n").split(';')
    col = 0
    for value in (alist):
        worksheet.write(row, col, value)
        col += 1
    row += 1
...