python 中有没有办法根据文件类型更改 csv 文件名?

Is there a way to change a csv filename by its file type in python?

我已经为我想要自动化的流程创建了一个脚本。我已经设法让脚本下载所需的 .csv 文件并将其移动到我的项目文件中。已将其移至此处以便使用 pandas.

操作数据

我现在需要 pandas 访问该文件,但我需要根据文件类型 (.csv) 更改文件名,或者让 pandas 访问文件类型而不是文件名。

这是因为,每次下载此 .csv 文件时,它都有不同的名称,为了使用 pandas.read_csv 功能,bot 需要文件每次都具有相同的名称时间,以便它可以重复该过程。

我试过使用 glob.glob 来根据文件类型访问文件,但似乎无法更改此文件的名称。请帮帮我

可能还值得一提,我 运行 这段代码在 VSC Mac 上

#这是我尝试重命名 .csv 文件的第一个代码

import glob
path = (glob.glob("/Users/MANI/Documents/Selenium/*.csv"))
os.rename(‘path’, ‘CC.csv’)

#这是我试图获取的第二个代码 pandas 以读取我选择的目录中的所有 .csv 文件

import pandas as pd
import glob

path = (‘/Users/MANI/Documents/Selenium/*.csv’) 
all_files = glob.glob(path + "/*.csv")

li = []

for filename in all_files:
    df = pd.read_csv(filename, index_col=None, header=0)
    li.append(df)

frame = pd.concat(li, axis=0, ignore_index=True)

#这是我尝试重命名 .csv 文件的最后一段代码。我使用了我用来访问 .csv 文件并将其从我的下载移动到我的项目文件夹中的部分代码

sourcepath='/Users/MANI/Downloads/'
destinationpath = ‘CC.csv’
sourcefiles = os.listdir(sourcepath)
for file in sourcefiles:
    if file.endswith('.csv'):

os.rename(os.path.join(sourcepath,file), os.path.join(destinationpath,file))

我只需要其中之一即可工作,但想知道哪一个最适合

这很漂亮straight-forward。这是一个例子,我测试过它并且有效:

import glob
import os
filename = glob.glob('*.csv')[0]
os.rename('./{}'.format(filename), 'correct_name.csv')

解释:

请记住 glob returns 所有匹配文件名的数组。所以:

  1. 如果您知道自己有多个 .csv,则必须缩小筛选范围以仅匹配您需要的
  2. rename 函数需要文件路径,而不仅仅是名称。所以请注意,我已经在 filename 前面加上 './' 以使其成为相对路径。