Python 3.x 如何在python中读取动态更改的excel文件名?

Python 3.x 如何在python中读取动态更改的excel文件名?,python-3.x,dataframe,Python 3.x,Dataframe,我有一个从内部工具下载的excel文件。每次我下载时,文件名都会动态地向文件名添加唯一的标记,例如:“Development”-U 168293048.csv、“Development”-U 38734023`.csv”或“Development”-U 168325435.csv”。 如何在Python中读取此文件?标记没有模式,它是随机生成的 任何潜在客户都将不胜感激。您可以使用glob执行文件名模式匹配,其中*匹配名称段中的零个或多个字符。以下文本将在代码中指定的目录中找到与示例中的命名格式

我有一个从内部工具下载的excel文件。每次我下载时,文件名都会动态地向文件名添加唯一的标记,例如:“Development”-U 168293048.csv、“Development”-U 38734023`.csv”或“Development”-U 168325435.csv”。 如何在Python中读取此文件?标记没有模式,它是随机生成的


任何潜在客户都将不胜感激。

您可以使用
glob
执行文件名模式匹配,其中
*
匹配名称段中的零个或多个字符。以下文本将在代码中指定的目录中找到与示例中的命名格式匹配的CSV文件:

import glob
import os

csv_dir = r"C:\CSVs"
csv_files = glob.glob(os.path.join(csv_dir, "Development_*.csv")
如果您知道只有1个CSV,则可以选择列表的第一个元素,如下所示:

csv_file = csv_files[0]
否则,最好按创建日期排序并选择最新的,例如

csv_files.sort(key=os.path.getctime)
csv_file = csv_files[-1]

获得CSV的路径后,您现在可以以最适合您需要的方式读取它,例如,使用
CSV
包:

如果有多个文件,您可以找到符合特定条件的每个文件。一个可能的标准可能是,它们都以“Development”开头,您可以使用Python的测试

这还处理根目录下文件夹中的文件。使用列表是可选的;如果需要,可以直接在循环中处理该文件

如果您只需要一个文件,但每次运行脚本时其名称都是可变的,那么最简单的方法仍然是像上面那样获取文件名。唯一的区别是,您可以在找到一个合适的文件后终止循环,并且绝对不需要列表

import os
import re

path = r'Your file path'
values = []
criteria = r'^Development_[\d\w]*\.csv$'
test = re.compile(criteria)

for root, _, files in os.walk(path):
    for file in files:
        # Our test is below - can be modified
        # IMPORTANT! strip newlines and spaces below
        if test.fullmatch(file.strip(' \n')) is not None:
            # Handle filename matches
            values.append(os.path.join(root, file))

# Now use filepaths found in files
print(values)