用Python输出文件的内容
我正在尝试做一些简单但有问题的事情 我想读入一个文件并将每个单词导出到excel电子表格中的不同列。我有电子表格部分,只是有一个困难的时间,什么应该是简单的部分 我所做的是把每个角色放在一个新行上 我有一个名为服务器列表的文件。该文件的内容如下所示用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
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酷!很乐意帮忙!请考虑接受我的回答:)我点击了复选标记,希望这意味着我接受了你的答案。抱歉耽搁了。