我正在尝试做一些简单但有问题的事情。
我想读取一个文件并将每个单词导出到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)
答案 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
子句是一个好习惯!