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

Python-从txt文件导入列表、迭代并作为参数传递,python,python-3.x,list,list-comprehension,Python,Python 3.x,List,List Comprehension,我试图将逗号分隔的列表从.txt文件(lib.txt)导入python列表。然后我想迭代列表中的每个项目,将每个值作为参数传递给另一个函数。一旦完成,循环应该继续到列表中的下一项,并且是无止境的,因为一旦循环到达列表的末尾,它就会重新开始 txt文件(lib.txt)的示例: 以下是我正在尝试的: def iterateList(): li=open('lib.txt').readlines() li=list(li.split(',')) for i in li:

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

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

以下是我正在尝试的:

def iterateList():
    li=open('lib.txt').readlines()
    li=list(li.split(','))
    for i in li:
        otherFunction(i)
我对这段代码有一些问题。在Python3.6中,我无法运行第3行(使用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)

您需要迭代代码中的
li
。以此为例:

def iterateList():
    li=open('lib.txt').readlines()

    for line in li:
        items = line.split(',')
        for item in items:
            print(item)
            # otherFunction(item)
打开(“test.txt”)作为f:
file=f.readlines()
对于文件中的行:
数字=行。拆分(“,”)
对于数字中的数字:
编号=编号。替换(“\n”和“”)
打印(数字)
产出:

483749
9384723
38485903
4875659
27388495

1.确保您正在使用带有open()的
。 这可以确保文件操作在使用后由Python关闭。有关更多信息,请参阅:

处理文件对象时,最好使用
with
关键字。这样做的好处是,即使在某个时候出现异常,文件套件完成后也会正确关闭

2.与
.split(“,”)
相比,更易于
.split(“,”)
由于从技术上讲,每个数字都用逗号分隔,因此更容易一次处理两个数字,否则您将得到如下输出:

483749
 9384723
 38485903
 4875659
 27388495\n # We remove the '\n' in number 4 below.
3.你必须重复这一行才能抓住单词。 这就是文件中的
行起作用的地方:
。当你接到电话后,你会得到号码<代码>用于行中的数字。拆分(“,”)

4.将
“\n”
替换为
。 由于行尾将有一个
\n
,请确保将其替换为空

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