【问题标题】:Python - Renaming all files in a directory using a loopPython - 使用循环重命名目录中的所有文件
【发布时间】:2017-08-11 05:08:10
【问题描述】:

我有一个文件夹,其中包含当前以时间戳命名的图像。我想重命名目录中的所有图像,以便将它们命名为“captured(x).jpg”,其中 x 是目录中的图像编号。

我一直在尝试按照本网站和其他网站上的建议实施不同的建议,但没有运气。这是我的代码:

path = '/home/pi/images/'
i = 0
for filename in os.listdir(path):
  os.rename(filename, 'captured'+str(i)+'.jpg'
  i = i +1

我不断收到一条错误消息,提示 os.rename 行“没有这样的文件或目录”。

【问题讨论】:

    标签: python raspberry-pi


    【解决方案1】:

    os.listdir() 返回的结果不包含路径。

    path = '/home/pi/images/'
    i = 0
    for filename in os.listdir(path):
        os.rename(os.path.join(path,filename), os.path.join(path,'captured'+str(i)+'.jpg'))
        i = i +1
    

    【讨论】:

      【解决方案2】:

      rename() 方法采用绝对路径,您只给它文件名,因此它无法找到文件。

      在文件名前加上文件夹的目录,得到绝对路径

      path = 'G:/ftest'
      
      i = 0
      for filename in os.listdir(path):
        os.rename(path+'/'+filename, path+'/captured'+str(i)+'.jpg')
        i = i +1
      

      【讨论】:

      • 为什么我得到 PermissionError: [WinError 32] 该进程无法访问该文件,因为它正被另一个进程使用?我以为我正在重命名文件以打开它
      【解决方案3】:

      两个建议:

      • 使用全局。这使您可以更精细地控制要迭代的文件名和目录。
      • 使用枚举代替手动计算迭代次数

      例子:

      import glob
      import os
      
      path = '/home/pi/images/'
      for i, filename in enumerate(glob.glob(path + '*.jpg')):
          os.rename(filename, os.path.join(path, 'captured' + str(i) + '.jpg'))
      

      【讨论】:

        【解决方案4】:

        这会起作用

        import glob2
        import os
        
        
        def rename(f_path, new_name):
            filelist = glob2.glob(f_path + "*.ma")
            count = 0
            for file in filelist:
                print("File Count : ", count)
                filename = os.path.split(file)
                print(filename)
                new_filename = f_path + new_name + str(count + 1) + ".ma"
                os.rename(f_path+filename[1], new_filename)
                print(new_filename)
                count = count + 1
        

        该函数接受两个参数,您的文件路径来重命名文件和您的新文件名

        【讨论】:

          猜你喜欢
          • 2014-12-30
          • 2014-05-16
          • 2014-06-05
          • 2015-02-28
          • 2014-11-08
          • 2014-10-09
          • 2013-08-20
          • 2014-11-29
          • 1970-01-01
          相关资源
          最近更新 更多