Вывод содержимого файла в Python - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь сделать что-то простое, но возникают проблемы.

Я хочу прочитать файл и экспортировать каждое слово в разные столбцы в таблице Excel.У меня есть часть электронной таблицы, мне просто трудно понять, что должно быть простой частью.

Я имею в виду, что каждый символ помещается в новую строку.

У меня есть файл с именемserver_list.Содержимое этого файла, как показано ниже.

Linux RHEL64 35
Linux RHEL78 24
Linux RHEL76 40

Я хочу прочитать каждую строку в файле и назначить каждому слову переменную, чтобы я мог вывести его в электронную таблицу.

File = open("server_list", "r")
FileContent = File.readline()

for Ser, Ver, Up value in FileContent:
    worksheet.write(row, col,     Ser)
    worksheet.write(row, col +1,     Ver)
    worksheet.write(row, col +1,     Up)
    row += 1

Я получаю следующую ошибку для этого примера

Traceback (most recent call last):
  File "excel.py", line 47, in <module>
    for Files, Ver, Uptime in FileContent:
ValueError: not enough values to unpack (expected 3, got 1)

1 Ответ

2 голосов
/ 16 марта 2019

FileContent - строковый объект, содержащий одну строку вашего файла:

Out[4]: 'Linux RHEL64 35\n'

То, что вы хотите сделать с этой строкой, это strip конечный тег \n затем split в отдельные слова. Только в этот момент вы можете выполнить назначение предмета, которое в настоящее время ведет к вашему ValueError в вашем for заявлении. В питоне это означает:

ser, ver, up = line.strip().split()  # line is what you called FileContent, I'm allergic to caps in variable names

Теперь обратите внимание, что это только одна строка, о которой мы говорим. Вероятно, вы хотите сделать это для всех строк в файле, верно? Так что лучше всего перебирать строки:

myfile = "server_list"
with open(myfile, 'r') as fobj:
    for row, line in enumerate(fobj):
        ser, ver, up = line.strip().split()
        # do stuff with row, ser, ver, up

Обратите внимание, что вам не нужно отслеживать row самостоятельно, для этого можно использовать итератор enumerate.

Также обратите внимание, и это крайне важно : оператор with, который я здесь использовал, гарантирует, что вы не оставите файл открытым. Использование клаузулы with при работе с файлами - хорошая привычка!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...