两个文本文件列表之间的递归

时间:2018-05-11 18:58:25

标签: python list file dictionary recursion

我有以下问题。 假设我有一个文件夹中的文本文件列表:

D:/Users/Roger/A

另一个文件夹中的另一个文本文件列表:

D:/Users/Roger/Reports

(列表是它们的完整路径),它们按字母顺序排列,因此它们匹配1:1,例如:

FOLDER_A = ["D:/Users/Roger/A/a.txt", "D:/Users/Roger/A/b.txt"]
FOLDER_B = ["D:/Users/Roger/B/a.txt", "D:/Users/Roger/A/b.txt"]

我使用两个列表制作了一本字典

Dict = {}
for i in range(len(FOLDER_A)):
    Dict[FOLDER_A[i]] = FOLDER_B[i]
    sorted(Dict.items())

稍后,我将文件夹a.txtA的信息复制到文件夹a.txt中的B文件,执行for循环,迭代在字典的keyvalue之间。

我的问题:使用某种递归是否有形式?而不是使用python 2.7在字典中迭代k,v。 非常感谢你!

2 个答案:

答案 0 :(得分:1)

有一种递归形式,与所有迭代算法一样,会有一种替代形式。但是,很少使用递归版本,因为可能会产生堆栈溢出,这可能是由于列表的长度比堆栈空间长。

递归算法可能非常具有表现力,但对我而言,数据的组织要求被迭代。

顺便说一下你的dict可以用词典理解来创建:

Dict = { FOLDER_A[i]]:FOLDER_B[i] for i in range(len(FOLDER_A)) }

答案 1 :(得分:-1)

这里你不需要任何递归。您可以遍历第一个文件夹中的文件并比较名称,然后将第一个文件夹中的信息复制到第二个文件夹中的文件,有些类似的事情:

import os

folder1= "folder1"
folder2 = "folder2"

for root, dirs, files in os.walk(folder1):
    for file in files:
    if file in os.listdir(folder2):
        file_path = os.path.join(folder1, file)
            file1_path = os.path.join(folder2, file)
        if os.path.isfile(file1_path):
        with open(file_path) as f:
            lines = f.readlines()
            with open(file1_path, 'a') as f1:
                f1.writelines(lines)