【问题标题】:Is there a way to change a csv filename by its file type in python?有没有办法通过 python 中的文件类型更改 csv 文件名?
【发布时间】:2020-10-10 14:40:07
【问题描述】:

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

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

这是因为,每次下载这个 .csv 文件时,它都有不同的名称,为了使用 pandas.read_csv 函数,机器人每次都需要文件具有相同的名称,这样它才能重复这个过程。

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

可能还值得一提,我在 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))

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

【问题讨论】:

    标签: python pandas glob read.csv listdir


    【解决方案1】:

    这很简单。这是一个示例,我对其进行了测试并且可以正常工作:

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

    解释:

    请记住,glob 返回一个包含所有匹配文件名的数组。所以:

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

    【讨论】:

    • 如果这回答了您的问题,请标记它(使用左侧的复选标记),以便其他人知道该信任哪一个。
    • 伴侣,我的朋友,你是一个绝对的传奇!完美运行...非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2021-03-20
    • 2012-12-09
    • 2019-05-20
    • 2022-07-06
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多