使用名称列表在 python 中打开多个文件

Posted

技术标签:

【中文标题】使用名称列表在 python 中打开多个文件【英文标题】:using a list of names to open multiple files in python 【发布时间】:2020-05-21 14:16:42 【问题描述】:

我想使用名称列表打开多个文件,这样打开的文件的名称也将包含列表中的名称,如下所示:

List = ["Sin", "Cos", "Tan"]
for x in List:
    df_x = pd.read_csv("C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\x.txt")

所以我希望x 替换文件名和目录中的x,这样最终我会从Sin.txt 打开df_Sin,从df_Cos 打开df_Cos,等等。

谢谢。

【问题讨论】:

【参考方案1】:
import pandas as pd
List = ["Sin", "Cos", "Tan"]
base="C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\"
df = 
for x in List:
    df[x] = pd.read_csv(base + x +".txt")

在上面的字典df中,使用df['Sin']来访问Sin变量,例如,如下:

print df['Sin']

【讨论】:

我喜欢这个,因为我需要 for 循环对每个数据帧进行操作。但是,每个 df 的名称不会被修改以包含列表中的名称。例如,当我询问 df_Sin 时,我收到一条错误消息,名称为“'df_Sin' is not defined” 当然,我已经修改了答案以使用字典,该字典将每个结果存储在“Sin”、“Cos”和“Tan”分配中。【参考方案2】:

map

f = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants\\.txt".format
list(map(pd.read_csv, map(f, ["Sin", "Cos", 'Tan'])))

【讨论】:

【参考方案3】:

您可能会发现将其存储在字典数据结构中会很有用。

path = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants"
file_names = ["Sin", "Cos", "Tan"]

df_dict = f"df_x": pd.read_csv(f"path//x.txt") for x in file_names

然后您可以使用

访问感兴趣的数据框
df_dict['df_Sin']

【讨论】:

我认为这是正确的方法。 2 条使其更简洁的建议:使用新的字符串插值:f"df_x" 而不是format(与文件路径相同)并将目录路径另存为 dict 外部的变量以使其更简洁 所以path = "C:\\Users\\gtala\\OneDrive\\Desktop\\TIME AI\\NIST_Tests\\constants" 在外面然后我们有df_dict = f"df_x: pd.read_csv(f"path//x.txt" for x in file_names 啊,看起来不错。我以前没有真正使用过字符串插值,谢谢指出!如果您愿意,欢迎您进行编辑?

以上是关于使用名称列表在 python 中打开多个文件的主要内容,如果未能解决你的问题,请参考以下文章

获取在 OSX 上的应用程序中打开的文档的名称(python)

使用 Python 提取列表中的字典键

使用列表理解 Python 创建新列

如何在 Python 中使用“with open”打开多个文件?

如何使用文件中的名称列表来手指输出?

Python,熊猫连接多个数据帧