如何访问 python 中文件名中具有相同字符串的文件夹中的文件?

How to access files in folder with same string in file name in python?

我正在尝试使用 python 浏览目录文件夹并匹配文件名中具有相同字符串的文件。此文件夹中的每个相关文件都是一个“.csv”文件,包含一个值列,蓝色文件为 Value_Blue,红色文件为 Value_Red。此文件夹中的文件依次为:Blue_111.csv、Blue_124.csv、Blue_145.csv、Blue_165.csv、Blue_176.csv... 然后是:Red_111.csv、Red_124.csv、Red_145.csv、Red_165.csv、Red_176.csv...等等。如图所示,与这些文件中的每一个相关联的数字并不是按相等的间隔顺序排列的,但这与此处无关。对于大多数蓝色文件,有一个匹配的红色文件,其文件名附有相同编号的扩展名。因此,有些蓝色文件没有相应的红色文件。

我想做的是遍历目录文件夹中的所有蓝色文件,将它们作为数据框打开,然后找到匹配的红色文件,将该文件作为数据框打开,然后乘以 Value 将这两个数据帧的列放在一起,然后将该新数据帧发送到新的 .csv,文件名包含相同的扩展名。

例如,如果在循环中它以 Blue_111.csv 开头,那么我希望它找到 Red_111.csv。我希望这两个 .csv 文件都作为数据框打开,并且 Value 列相乘。然后我想将这个新计算的数据帧发送到一个名为`Green_111.csv 的新 .csv,然后继续循环到 Blue_124.csv,等等

这是我的目标的伪代码示例:

folder = Path/to/Directory/Folder

for f in folder that is a .csv with "Blue" in filename:
     blue_df = pd.read_csv(f)  
     red = matching Red file
     red_df = pd.read_csv(red)
     green_df = blue_df.join(red_df) 
     green_df = green_df['Value_Blue'] * green_df['Value_Red']
     green_df.to_csv(Path/to/Directory/Folder/Green_*matching_number*.csv)

如何匹配文件,然后创建文件名中具有相同匹配扩展名的计算输出文件?

使用glob.glob()匹配所有匹配通配符模式的文件名。然后您可以使用 .replace()Blue 替换为 Red 并使用 Green 来创建其他文件名。

import glob, os

folder = 'Path/to/Directory/Folder'

for blue in glob.glob(os.path.join(folder, "Blue_*.csv")):
    blue_df = pd.read_csv(blue)
    red = blue.replace("Blue_", "Red_")
    green = blue.replace("Blue_", "Green_")
    red_df = pd.read_csv(red)
    green_df = blue_df.join(red_df) 
    green_df = green_df['Value_Blue'] * green_df['Value_Red']
    green_df.to_csv(green)