Python - 从 txt 文件导入列表,迭代并作为参数传递



我正在尝试将逗号分隔的列表从.txt文件(lib.txt(导入到python列表中。然后,我想遍历列表中的每个项目,将每个值作为参数传递给另一个函数。完成后,循环应继续到列表中的下一项,并且是无休止的,因为一旦到达列表的末尾,它就会重新开始。

txt 文件 (lib.txt( 的示例:

483749, 9384723, 38485903, 4875659, 27388495

这是我正在尝试的:

def iterateList():
li=open('lib.txt').readlines()
li=list(li.split(','))
for i in li:
otherFunction(i)

我对此代码有一些问题。在python 3.6中,我无法运行第三行(使用li.split(,我猜测是因为li不是字符串。但是如果我在尝试拆分之前将 li 转换为字符串,它也不起作用。

我的做法是否正确?你会做任何不同的事情吗?

谢谢你的关注。

readlines返回一个列表,并且您希望对字符串执行拆分,因此您需要改用read来返回字符串。

一个可能的解决方案是:

def iterateList():
with open('lib.txt') as f:
data = f.read().split(',')
while True:
for i in data:
otherFunction(i)
with open("test.txt") as f:
file = f.readlines()
for line in file:
numbers = line.split(", ")
for number in numbers:
number = number.replace("n", "")
print(number)

输出:

483749
9384723
38485903
4875659
27388495

1. 确保您使用的是with open().

这可确保文件操作在使用后被 Python 关闭。有关详细信息,请参阅文档:

处理文件对象时,最好使用with关键字。优点是文件在其套件完成后会正确关闭,即使在某个时候引发异常也是如此。

阿拉伯数字。与.split(",")相比,更易于.split(", ")

由于从技术上讲,每个数字都由逗号空格分隔,因此一次处理这两个数字更容易,否则您最终会得到如下输出:

483749
9384723
38485903
4875659
27388495n # We remove the 'n' in number 4 below.

3.您必须遍历该行才能抓住单词。

这就是for line in file:发挥作用的地方。在你得到线之后,你得到数字;for number in line.split(", ").

4. 将"n"替换为""

由于行的末尾您将有一个n,确保用什么都没有替换它。

您需要循环访问代码中的li。以这个为例:

def iterateList():
li=open('lib.txt').readlines()
for line in li:
items = line.split(',')
for item in items:
print(item)
# otherFunction(item)

最新更新