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