【问题标题】:How to change certain characters of files within a folder如何更改文件夹中文件的某些字符
【发布时间】:2021-07-21 01:09:36
【问题描述】:

我有一个名为“animals”的文件夹

在文件夹中我有以下文件:

"cat.PNG", "dog.PNG", "horse.PNG", "sheep.PNG"

我知道以下代码会将文件更改为小写

files = os.listdir('.')
for f in files:
    new = f.lower()
    os.rename(f, new)

但是,如果我希望文件类型较低且动物的名称位于每个文件的上方,我该如何更改?

【问题讨论】:

  • 您会问自己两个问题:“我可以将文件名拆分为路径和扩展名吗?”和“我可以将一个字符串更改为大写,将另一个字符串更改为小写吗?”编程,就像生活中的大多数其他问题一样,可以通过将问题分解为更小、更易于管理的部分来解决。

标签: python file directory subdirectory


【解决方案1】:

一个非常简单的解决方案如下:

for f in files:
    new = f.upper()
    new.replace(".PNG", ".png")
    os.rename(f, new)

【讨论】:

    【解决方案2】:

    最干净的方式(也适用于任何目录和任何扩展):

    for f in os.listdir(source_dir):
        name,ext = os.path.splitext()    
        os.rename(os.path.join(source_dir,f), os.path.join(source_dir,name+ext.lower())
    
    • 将名称拆分为基数+扩展名
    • 将扩展名转换为小写
    • 使用完整路径执行重命名

    【讨论】:

      【解决方案3】:

      您可以拆分文件名,单独执行每个操作,然后重新加入它们。

      files = os.listdir('.')
      for f in files:
          # Split the filename by '.'
          split_filename = f.split('.')
      
          filename = ".".join(split_filename[:-1])
          extension = split_filename[:-1]
      
          # Do each operation
          filename = filename.upper()
          extension = extension.lower()
      
          # Rejoin the filename
          new_filename = filename + '.' + extension
      
          # Rename the file
          os.rename(new_filename, new)
      

      【讨论】:

        【解决方案4】:
        (base, ext) = f.split('.')
        new_name = f'{c.upper()}.{d.lower()}'
        os.rename(f, new_name)
        

        【讨论】:

        • 小心,因为文件名中可能有超过 1 个点
        【解决方案5】:

        你可以使用split和join,看这个例子:

        file_names = ["cat.PNG", "dog.PNG", "horse.PNG", "sheep.PNG"]
        
        for file_name in file_names:
            name, extension = file_name.split('.')
        
            print('.'.join([name.upper(), extension.lower()]))
        

        【讨论】:

        • 如果文件名中的点超过 1 个则失败
        猜你喜欢
        • 1970-01-01
        • 2021-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多