用Python输出文件的内容

用Python输出文件的内容,python,for-loop,output,Python,For Loop,Output,我正在尝试做一些简单但有问题的事情 我想读入一个文件并将每个单词导出到excel电子表格中的不同列。我有电子表格部分,只是有一个困难的时间,什么应该是简单的部分 我所做的是把每个角色放在一个新行上 我有一个名为服务器列表的文件。该文件的内容如下所示 Linux RHEL64 35 Linux RHEL78 24 Linux RHEL76 40 我想读取文件中的每一行,并为每个单词分配一个变量,以便将其输出到电子表格 File = open("server_list", "r") FileCon

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

我想读入一个文件并将每个单词导出到excel电子表格中的不同列。我有电子表格部分,只是有一个困难的时间,什么应该是简单的部分

我所做的是把每个角色放在一个新行上

我有一个名为服务器列表的文件。该文件的内容如下所示

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)
回溯(最近一次呼叫最后一次):
文件“excel.py”,第47行,在
对于FileContent中的文件、版本、正常运行时间:
ValueError:没有足够的值来解包(预期为3,得到1)

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

Out[4]: 'Linux RHEL64 35\n'
您要对该字符串执行的操作是
strip
结束标记
\n
然后
拆分成单个单词。只有在这一点上,您才能执行当前导致
for
-语句中出现
ValueError
的项目分配。 在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
请注意,您不需要自己跟踪
,您可以使用
枚举
迭代器进行跟踪


另请注意,这一点非常重要:我在这里使用的
with
语句确保您不会让文件保持打开状态。无论何时处理文件,使用
with
-子句都是一个好习惯

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

Out[4]: 'Linux RHEL64 35\n'
您要对该字符串执行的操作是
strip
结束标记
\n
然后
拆分成单个单词。只有在这一点上,您才能执行当前导致
for
-语句中出现
ValueError
的项目分配。 在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
请注意,您不需要自己跟踪
,您可以使用
枚举
迭代器进行跟踪


另请注意,这一点非常重要:我在这里使用的
with
语句确保您不会让文件保持打开状态。无论何时处理文件,使用
with
-子句都是一个好习惯

将for循环中的
FileContent()
更改为
FileContent
,使其
用于文件中的Ser、Ver、Up值:
,废弃整个
读取行。(并且不要以大写字母开头变量名。)请在您的问题上标记您用于编写Excel文件/工作表的库的名称。请在file.readline().strip().split()中尝试
for ser,ver,up:
不确定在这里提及样式是否合适,但名称开头的大写字母通常只保留给类。将for循环中的
FileContent()
更改为
FileContent
,使其
用于文件中的Ser、Ver、Up值:
,废弃整个
readline
内容。(并且不要以大写字母开头变量名。)请在您的问题上标记您用于编写Excel文件/工作表的库的名称。请在file.readline().strip().split()中尝试
for ser,ver,up:
我不确定在这里提及风格是否合适,但名字开头的大写字母通常只保留给类。这看起来可能有用,我非常感谢您花时间这么做。我会试一试的。我确实加入了你的变化,它们就像一个符咒一样,谢谢你。@Azcacutusjack酷!很乐意帮忙!请考虑接受我的回答:)我点击了复选标记,希望这意味着我接受了你的答案。抱歉耽搁了。这看起来可能有用,我非常感谢你花这么多时间来做。我会试一试的。我确实加入了你的变化,它们就像一个符咒一样,谢谢你。@Azcacutusjack酷!很乐意帮忙!请考虑接受我的回答:)我点击了复选标记,希望这意味着我接受了你的答案。抱歉耽搁了。