用Python输出文件内容

时间:2019-03-15 22:19:03

标签: python for-loop output

我正在尝试做一些简单但有问题的事情。

我想读取一个文件并将每个单词导出到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 个答案:

答案 0 :(得分:2)

FileContent是一个字符串对象,包含文件的一行:

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

您要使用此字符串是strip结尾标记\n,然后split变成单个单词。仅在这一点上,您才能进行当前导致您在ValueError语句中for的项目分配。 在python中,这意味着:

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子句是一个好习惯!