在 python 中重命名文件名之前比较文件扩展名,文件名上没有标记

Comparing the file extension before renaming file name in python without the mark on file name

我是 python 的新手。目前,我正在制作一个脚本来比较文件并在特定文件夹中重命名它。如果文件是 csv 或 exl,则将其重命名为 report.csv 并移至文件夹。

我当前的问题是...我的笔记本电脑工作正常,但是当我在其他笔记本电脑上 运行 脚本时,文件名显示为数组,它不允许我正确更新名称:(数字, 'filename').例如输出:

("(1, 'desktop", ".ini')") ("(2, 'download data')", '') ("(3, 'pycharm-community-2020.3.5", ".exe')")

我的代码如下:

import os
from os import  path
import shutil
import time

def rename():
    os.chdir(r'C:\Users\admin\Downloads')
    for filename in enumerate(os.listdir()):
        src= filename
        ext=os.path.splitext(str(src))
        print(ext)
        if ext== ".csv":
            src=str(filename)
            dest=r'C:\ReportDown\LateReport\matic.csv'
            print(src)
            os.rename(src,dest)

rename()

谁能指导我如何比较文件夹中的文件是否为 csv 文件,然后重命名并移动到新文件夹?

非常感谢

您不需要 enumerate()。只需执行 for filename in os.listdir(): 即可。

enumerate() 函数用于当您想要遍历项目 索引时,在这种情况下您只需要项目本身。如果你想使用 enumerate,你必须改为 for index, filename in enumerate(os.listdir()):,因为 enumerate 给你 tuples of (index, value)。在这里,您的代码将整个元组转换为字符串,然后尝试将其用作文件名,这会破坏程序。

此外,os.listdir() 应该已经为您提供了字符串,因此不需要 str(filename)