python - Python 从 txt 文件中读取
问题描述
我想将一堆名称从文本文件中提取到 python (v3.6.5) 中。
我的文本文件是纯文本(file.txt),每个名字都在一行
Name 1
Name 2
Name 3 etc.
在 python 中,我已验证该路径适用于以下代码
path_to_file = "D:\(my user name)\Documents\names.txt"
file_object = open(path_to_file, "r")
print(file_object)
这将返回控制台中文件的路径,这意味着它正在工作。
现在我想把名字放到一个列表中。
所以
names = fileobject.read()
print(names)
返回
Name 1
Name 2
Name 3 etc.
但它不像一个普通的列表(即。
["name 1", "name 2", "name 3"] etc
所以如果我让它叫第二个名字
print(names[1])
它会打印
a
如名字的第二个字母(记住 0 是列表的开头)
我怎样才能使它像一个普通的数组,其中每个名称都用引号分隔,用逗号分隔,方括号在外面。
解决方案
这里有很多不良做法的答案。最好的方法是意识到您可以直接迭代文件对象
path_to_file = r"D:\(my user name)\Documents\names.txt"
with open(path_to_file) as file_object: # this is a safe way of opening files
for line in file_object:
print(line)
或者,如果您想将其保存为列表并按索引访问,请names[0]
使用:
with open(path_to_file) as file_object: # this is a safe way of opening files
names = [line.rstrip('\n') for line in file_object] # remove \n at end
print(names[0]) # --> name 1
print(names[1]) # --> name 2
关于with
. 不要做
file = open(path)
# do stuff
因为您有损坏数据的风险。您必须关闭您的文件。然而
file = open(path)
# do stuff
file.close()
也很危险,因为#do stuff
可能会失败,在这种情况下文件将永远不会关闭。一种方法是使用
try:
file = open(path)
# do stuff
finally:
file.close()
无论在哪里发生什么# do stuff
,file.close()
总是会执行。不过,这有点冗长,为文件对象编写它的更快方法是
with open(path) as file:
# do stuff
推荐阅读
- java - 使用 iText 5.5.5 签署 PDF 文档时出现问题
- javascript - 在rails 6 jquery中加载主题资产和资产加载顺序
- python - 从单列创建多列熊猫并输入值
- indexing - 有什么方法可以获取被索引的文档总数
- python - BeautifulSoup python的网页抓取
- java - 使用 thymeleaf 显示文本,与在文本 file.txt 中显示的完全一样
- spring - 在按钮单击/页面加载后填充 p:datatable
- python - 如何在python中制作这样的循环?
- amazon-web-services - 从 API Gateway 客户端证书中检索 PEM 编码的私钥
- java - 从 MySQL 的 mediumblob 恢复 Ppt 文件后损坏