python - 在 Python 中输出文件的内容
问题描述
我正在尝试做一些简单但有问题的事情。
我想读入一个文件并将每个单词导出到 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)
解决方案
FileContent
是一个包含单行文件的字符串对象:
Out[4]: 'Linux RHEL64 35\n'
你想用这个字符串做的是strip
结束标签\n
,然后split
变成单个单词。只有在这一点上,您才能执行当前导致您ValueError
在for
-statement 中的项目分配。在 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
-clause 是一个好习惯!
推荐阅读
- javascript - 如何通过 PHP 中另一个函数的构造()访问返回值?
- node.js - 为什么VS 2017在.Net Core App中将node_modules文件夹设置为只读?
- php - Wordpress Functions.php 建议
- google-cloud-vision - 在图像中检测产品
- python - 我的模型的准确性没有提高,模型在训练数据上过拟合
- docker - 如果文件 /etc/docker/daemon.json 存在,则无法启动 Docker 守护程序
- vb.net - VB.NET 中新的 String.Format 语法的文档(前导引号前的 $)
- csv - Haskell:将 CSV 文件解析为浮点列表列表
- javascript - Javascript/NodeJS 生态系统中的 Rails/Laravel 生态系统等价物?
- python - Anaconda3 已安装,jupyter notebook 出错 No module named 'pyspark'