Python:创建文件夹并从数组递归存储数据

时间:2014-09-24 12:01:27

标签: python arrays python-2.7 recursion output

我需要递归地创建目录并将数据输出存储在每个目录中的乘法数组中。例如,我目前有:

    output_lat=zip(name_lat[0], lat[0])
    output_a = zip(name_a[0], full[0], a_type[0])
    f=open('geo.out','w')
    for line in output_lat:
            f.write(" ".join(str(x) for x in line) + "\n")
    for line in output_a:
            f.write(" ".join(str(x) for x in line) + "\n")

这会创建一个输出' geo.out'我希望的格式。但是,因为' name_lat',' lat',' name_a',' full'和' a_type'是所有数组(长度相同)我想先创建一个主文件夹,然后以每个元素命名的子文件夹中打印每个geo.dat文件。

例如,我希望输出存储在"〜/ main / geo ## / geo ##。dat"等文件夹中。其中##是数组的索引。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

您只需要在代码中添加用于创建这些目录的行。另一方面,我不认为“递归”描述你想要做的事情。

def output(output_a, output_lat, ouput_dir):

    # First create the hole directory structure.
    # -------------------------------------------
    ouput_path = os.path.join(ouput_dir, "geo{0}".format(index))
    # Check ouput directory existence.
    if not os.path.exists(os.path.join(ouput_dir, "geo{0}".format(index))):
        os.mkdir(ouput_path)

    for i in range(len(output_lat)):
        folder_name = os.path.join(ouput_path, "geo{0}".format(index))
        try:
            os.mkdir(folder_name)
        except OSError, e: 
            print("Error creating output dir: {0}".format(e))

    # Then create output files.
    # --------------------------------------------
    for index, (o_lat,o_a) in enumerate(zip(output_lat, output_a)):
        folder_name = os.path.join(ouput_path, "geo{0}".format(index))
        with open(os.path.join(folder_name, "geo{0}.dat".format(index)), "w+") as f:
            for line in o_lat:
                f.write(" ".join(str(x) for x in line) + "\n")
            for line in o_a:
                f.write(" ".join(str(x) for x in line) + "\n")