【问题标题】:Read file name then call a function with python读取文件名然后用python调用一个函数
【发布时间】:2021-08-26 10:29:03
【问题描述】:

我想读取文件名(A/B/C/D)并为Files文件夹中的每个文件调用调用函数,然后处理下一个文件(自动传递到下一个文件并函数)。

我有多个文件存储在 File_folder 文件夹中:

目录结构如下:

       App/  
       ├─ main.py
       └─ Files/  
       |   └─B.txt
       |   └─A.xlsx
       |   └─D.xlsx    
       |   └─C.csv
       └─ File_output/

我在 ma​​in.py 中存储了多个函数:

def A_fct(fileA):
    pass
def B_fct(fileB):
    pass
def C_fct(fileC):
    pass
def D_fct(fileD):
    pass
def E_fct(fileE):
    pass
def F_fct(fileF):
    pass

例子:

读取文件名 B.txt => 调用 B_fct

读取文件名 A.xlsx => 调用 A_fct

等等……

请问我该怎么做!

我已经阅读了以下所有建议,但仍然不知道该怎么做。

【问题讨论】:

  • 这能回答你的问题吗? python function call with variable
  • 这已经回答here 函数调用被分配给一个变量
  • 我已经看到了这个答案,这不是我需要的。我想自动化文件读取和功能应用
  • 是哪一个?这是两个问题。 SO问题应该集中在一个。无论如何,它们都是重复的,并且已经在这个站点上得到了回答。请务必在询问之前进行研究,并且仅在不得已的情况下才在这里询问
  • 首先是这个:How do I list all files of a directory? 然后是上面的链接

标签: python-3.x


【解决方案1】:

如果我正确理解了这个问题,您想根据文件名为每个文件调用某个函数

你可以定义一个带有file_name => function关系的dict

name_to_func = {
    "A": A_fct,
    "B": B_fct,
    ...
}

然后调用函数

name_to_func[file_name](file_name)

编辑:

现在我了解到您想要遍历文件夹中的文件,您可以使用 os.listdir(path) 来实现。

例如,像这样的:

import os

path = '/your/path/here'

name_to_func = {
    "A": A_fct,
    "B": B_fct
}

for file_name in os.listdir(path):
    file_prefix = file_name.split('.')[0]
    name_to_func[file_prefix](file_name)

【讨论】:

  • 是的,但我想自动传递给下一个文件和函数
  • @Prestige 在文件夹文件上编写循环时遇到什么问题?
  • @Prestige 我编辑了帖子。希望这些修改可以帮助您解决问题
猜你喜欢
  • 2021-11-14
  • 2013-07-12
  • 2014-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
相关资源
最近更新 更多