Python 处理多个列表

Python 处理多个列表,python,list,python-2.7,Python,List,Python 2.7,我编写了一个Python脚本来处理多个文件中的数据,并创建多达9个新文件作为输出。为此,我创建了9个不同的列表,然后将其写入多达9个不同的文件(取决于列表是否包含任何项目) 我的代码非常重复,例如: if list1 != []: newfile1 = open(os.path.join(dirpath,"newlist1.txt"),'w') for i in list1: newfile1.write(i) newfile1.close() if list2

我编写了一个Python脚本来处理多个文件中的数据,并创建多达9个新文件作为输出。为此,我创建了9个不同的列表,然后将其写入多达9个不同的文件(取决于列表是否包含任何项目)

我的代码非常重复,例如:

if list1 != []:
   newfile1 = open(os.path.join(dirpath,"newlist1.txt"),'w')
   for i in list1:
      newfile1.write(i)
   newfile1.close() 

if list2 != []:
   newfile2 = open(os.path.join(dirpath,"newfile2.txt"),'w')
   for i in list2:
      newfile2.write(i)
   newfile2.close()
。。。。。对于9个不同的列表 我只是好奇,主要是为了我自己的发展,我可以用一种更有效的方式来做这件事吗?我通过循环目录中的文件来创建列表,但是我可以通过循环内存中的列表来创建输出文件吗


我可能应该为文件编写创建一个函数,但我不确定如何处理它需要创建的不同输出文件名?每个列表都有不同的输出名称-是否创建不同的变量?这样会更有效吗?

如果您有一个列表列表
LST
,例如:

lsts = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i']]
然后你可以做:

for i, lst in enumerate(lsts, 1):
    if lst:
        with open(os.path.join(dirpath,"newfile{}.txt".format(i)), 'w') as f:
            for elem in lst:
                f.write(elem)
如果lst(空列表为false),则可以使用
检查列表是否为空。另外,将
上下文一起使用以打开文件不需要在之后明确关闭它

编辑:构建一个字典可能更符合逻辑(因此您可以将文件名和数据放在一起):


您仍然可以编写一个函数,但可能需要为它提供一些参数,并指定在每个参数中调用什么:

def writeToFile(listname, fileName = "newlist1.txt"):
    if not listname:
        with open(os.path.join(dirpath, fileName) , "w") as myFile:
            for x in listname:
                myFile.write(x)
然后,如果你选择了这个解决方案,那就直接打9次电话吧。但是,在第一次调用中,第二个参数已经为您完成

writeToFile(list1)
writeToFile(list2, "newList2.txt")

等等等等等等。

谢谢。。我正在考虑命名部分。。。。你的代码是否建议我使用一个文件名字典,并使用它正在查看的列表的增量来命名它们?@CarmenC-我的回答给出了增量名称。但字典可能更合适。在编辑中有很好的建议。非常感谢!!我可能没有想到这一点。我已经用上面类似的方式完成了,但是有两个列表,一个列表,一个列表,另一个列表有名称,使用列表的列表索引从第二个名称列表中选择for循环中的文件名。我不知道如何让dictionary键作为文件名工作谢谢,如果我使用函数,我就是这么想的,只是需要确认使用参数是正确的方法。
writeToFile(list1)
writeToFile(list2, "newList2.txt")