一、Background
当想将照片序列合成延时摄影视频时,可能会发现照片中缺少一张,或者照片序列是跨时间、并不连续的,如图1所示,但PR中只有连续的照片序列才能导入。
                                                
图1 时间不连续序列
二、Method
这时往往需要将照片按照修改时间重命名,下面写了一个很简单的python脚本,理论上来说支持10000张照片以内的照片序列重命名,操作如下:
1.将照片备份(没有undo机制,以免脚本失误无法撤销)
2.将rename.exe文件放入照片文件中,双击即可重命名(不可更改名字)。如果安装过python,也可以直接双击脚本文件。
                   
图2 操作演示
三、Code
  
   - 
    
     
    
    
     
      import os
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      def reNameByTime(path):
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          mlist = []
     
    
- 
    
     
    
    
         
      # 获取文件名列表
     
    
- 
    
     
    
    
     
          files = os.listdir(path)
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
         
      # 获得名称带时间戳的新文件名列表
     
    
- 
    
     
    
    
         
      for filename 
      in files:
     
    
- 
    
     
    
    
             
      # 获得文件的最后修改时间
     
    
- 
    
     
    
    
     
              modifytimes = os.path.getmtime(path + filename)
     
    
- 
    
     
    
    
     
              filename_lower = filename.lower()
     
    
- 
    
     
    
    
             
      # 筛选.jpg格式
     
    
- 
    
     
    
    
             
      if 
      ".jpg" 
      in filename_lower:
     
    
- 
    
     
    
    
     
                  mlist.append(str(int(modifytimes)) + 
      "-" + filename)   
      # .jpg
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
          mlist = sorted(mlist)
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
         
      # 遍历修改时间戳为序号
     
    
- 
    
     
    
    
         
      for i 
      in range(len(mlist)):
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
             
      # 截取获得原先的文件名
     
    
- 
    
     
    
    
     
              oldname = mlist[i][
      11:]     
      # 切片操作,从11至后
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
             
      # 将时间戳部分修改为序号,得到新的文件名
     
    
- 
    
     
    
    
             
      if (i + 
      1) < 
      10:     
      # 0-9
     
    
- 
    
     
    
    
     
                  newname = 
      "000" + str(i + 
      1) + 
      ".jpg"
     
    
- 
    
     
    
    
             
      elif (i + 
      1) > 
      9 
      and (i + 
      1) < 
      100:   
      # 10-100
     
    
- 
    
     
    
    
     
                  newname = 
      "00" + str(i + 
      1) + 
      ".jpg"
     
    
- 
    
     
    
    
             
      elif (i + 
      1) > 
      99 
      and (i + 
      1) < 
      1000:   
      # 100-1000
     
    
- 
    
     
    
    
     
                  newname = 
      "0" + str(i + 
      1) + 
      ".jpg"
     
    
- 
    
     
    
    
             
      else:
     
    
- 
    
     
    
    
     
                  newname = str(i + 
      1) + 
      ".jpg"    
      # 1000 - 9999
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      # print(newname, oldname)
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
             
      # 重命名文件,按修改时间排序并加序号前缀
     
    
- 
    
     
    
    
     
              os.rename(path + oldname, path + newname)
     
    
- 
    
     
    
    
      
     
    
- 
    
     
    
    
     
      #如果想执行py文件,可以将后缀改为“.py”,如果想打包成exe,需要将后缀改为“.exe”
     
    
- 
    
     
    
    
     
      if __name__ == 
      "__main__":
     
    
- 
    
     
    
    
     
          filepath = os.sys.argv[
      0].replace(
      "rename.py", 
      "")  
     
    
- 
    
     
    
    
     
          print(os.sys.argv[
      0])
     
    
- 
    
     
    
    
     
          reNameByTime(filepath)
     
    
如果想按照其他时间进行排序:
  
   - 
    
     
    
    
     
      # os.path.getatime(file) 输出文件访问时间
     
    
- 
    
     
    
    
     
      # os.path.getctime(file) 输出文件的创建时间
     
    
- 
    
     
    
    
     
      # os.path.getmtime(file) 输出文件最近修改时间
     
    
如果想对其他类型的文件进行排序,更改对应后缀名即可。
文件链接:https://pan.baidu.com/s/1LagM8NDw7PT4nkxWAkJLZw 
 提取码:9cps 
转载:https://blog.csdn.net/weixin_41425047/article/details/116809926
