根据python中csv文件中的一些内容重命名csv文件

Posted

技术标签:

【中文标题】根据python中csv文件中的一些内容重命名csv文件【英文标题】:Renaming csv files according to some contents inside the csv file in python 【发布时间】:2021-08-10 12:28:21 【问题描述】:

我在一个子文件夹中有许多 csv 文件,比如数据。这些 .csv 文件中的每一个都包含一个 date 列。

430001.csv, 43001(1).csv,43001(2).csv,..........,43001(110).csv etc.

我想根据csv文件列内的日期重命名文件夹中的所有文件。

期望的输出:

430001-1980.csv, 43001-1981.csv,43001-1985.csv,..........,43001-2010.csv etc.

我尝试按照以下建议的步骤进行操作: Renaming multiple csv files

仍然无法获得所需的输出。

任何帮助将不胜感激。

谢谢!

【问题讨论】:

您能否提供您的代码/尝试示例?你到底卡在哪里了? 请同时提供一个 .csv 内容的样本 【参考方案1】:

您可以遍历它们,提取日期以创建新文件名,然后保存。

# packages to import
import os
import pandas as pd
import glob
import sys

data_p = "Directory with your data"
output_p = "Directory where you want to save your output"
retval = os.getcwd() 
print (retval) # see in which folder you are

os.chdir(data_p) # move to the folder with your data
os.getcwd()

filenames = sorted(glob.glob('*.csv'))
fnames = list(filenames) # get the names of all your files
#print(fnames) 

for f in range(len(fnames)):
    print(f'fname: fnames[f]\n')
    pfile = pd.read_csv(fnames[f], delimiter=",") # read in file

    #extract filename
    filename = fnames[f]
    parts = filename.split(".") # giving you the number in file name and .csv
    only_id = parts[0].split("(") # if there is a bracket included 

    # get date from your file
    filedate = pfile["date"][0] # assuming this is on the first row
    filedate = str(filedate)

    # get new filename
    newfilename = only_id[0]+"-"+filedate+parts[1]

    # save your file (don't put a slash at the end of your directories on top)
    pfile.to_csv(output_p+"/"+newfilename, index = False, header = True)
    
   

【讨论】:

亲爱的 Clarius333, 非常感谢。我的问题是根据自己的方便对代码进行小幅修改来解决的......非常感谢!

以上是关于根据python中csv文件中的一些内容重命名csv文件的主要内容,如果未能解决你的问题,请参考以下文章

文件复制和重命名

重命名 Azure Blob 存储中的 csv 文件

在解决方案资源管理器中重命名 .cs 属性的问题

重命名非常大的 CSV 数据文件的列 [重复]

如何在 python 中提取之前重命名压缩文件的内容?

将数据导出到 csv 并在计算机配置文件名称后重命名