首页 > 解决方案 > 如何将所有 .txt 文件加载到具有不同名称的文件夹中 - Python

问题描述


我必须通过从文件夹中导入所有 .txt 文件来创建一堆 numpy 数组。这就是我现在正在做的方式:

wil_davide_noIA_IST_nz300           = np.genfromtxt("%s/davide/wil_davide_noIA_IST_nz300.txt" %path)
wig_davide_multiBinBias_IST_nz300   = np.genfromtxt("%s/davide/wig_davide_multiBinBias_IST_nz300.txt" %path)
wig_davide_multiBinBias_PySSC_nz300 = np.genfromtxt("%s/davide/wig_davide_multiBinBias_PySSC_nz300.txt" %path)
wig_davide_noBias_PySSC_nz300       = np.genfromtxt("%s/davide/wig_davide_noBias_PySSC_nz300.txt" %path)
wig_davide_IST_nz300                = np.genfromtxt("%s/davide/wig_davide_IST_nz300.txt" %path)
wig_davide_noBias_IST_nz300         = np.genfromtxt("%s/davide/wig_davide_noBias_IST_nz300.txt" %path)
wig_davide_PySSC_nz300              = np.genfromtxt("%s/davide/wig_davide_PySSC_nz300.txt" %path)
...

从文件夹

在此处输入图像描述

我可以以某种方式自动化这个过程吗?请注意,我希望数组与导入的文件具有相同的名称(当然,没有 .txt)。
非常感谢

标签: pythonarraysnumpyimporttxt

解决方案


注意:如果文件或其名称存在任何安全问题,您不应该这样做。

否则,您可以使用该exec函数来获取所需的变量。有关列表方法,请参阅其他解决方案。

import os
path_to_folder = "."
command = ""
for f in os.listdir(path_to_folder):
    if f.endswith(".txt"):
        command += f.replace(".txt", "") + f" = np.genfromtxt('{path_to_folder}/{f}')\n"
exec(command)

根据您的文件夹/文件结构,您需要稍微更改代码,但这应该像要求的那样工作。


推荐阅读