2015-05-08 34 views
0

我遇到了一些麻烦,我认为它必须是一个简单的修复。我目前从一个路径拉png文件,并将其保存在另一个路径的文件夹中。这一切都正确完成。我之后尝试将这些文件夹分组到一个Results文件夹中。我当前的代码不会抛出任何异常,结果文件夹被创建,但其他文件夹没有移动到Results文件夹中。从其他方法python无法获取文件夹以保存在一个文件夹内

if flag ==1: 
     for png in pngs: 
      if 'MPM' in png: 
       target = self.create_folder("MPM") 
       folderList.add(target) 
      elif 'DAT' in png: 
       target = self.create_folder("DAT") 
       folderList.add(target) 
      elif 'HNR' in png: 
       target = self.create_folder("HNR") 
       folderList.add(target) 
      elif 'VER' in png: 
       target = self.create_folder("VER") 
       folderList.add(target) 
      elif 'XT2R' in png: 
       target = self.create_folder("XT2R") 
       folderList.add(target) 
      else: 
       target = self.create_folder("Other") 
       folderList.add(target) 
      try: 
       print "png =", png 
       print "target = ", target 

       os.rename(png, os.path.join(target, png)) 
       print "png after =", png 
      except BaseException: 
       print "Could not rename file for target" 

    for folder in folderList: 
     # path,folder = os.path.split(folder) 
     # folder = "./%s" %(folder) 
     try: 
      print "folder = ", folder 
      print "results = ", results 
      os.rename(folder, os.path.join(results, folder)) 
      print "folder after rename = ", folder 
     except BaseException: 
      print "Could not rename file for results" 

这里

def create_folder(self,folder_name): 
    '''Create folders if does not exist''' 
    path,fileName = os.path.split(self.snmpPaths[0]) 
    target = os.path.join(path, folder_name) 
    if not os.path.exists(target): 
     os.makedirs(target) 
    return target 

片段是我print语句的样品。如果需要,我可以提供更多。任何帮助将不胜感激。我试图复制与我的注释代码中所见的png文件(./FILE)相同的格式,但我会得到一个BaseException。对于为什么我的代码没有按照我想要的方式执行,一个解释是很好的。我猜这跟我的folder变量有关。

PNG = ./VER_SUBMODE.png

目标= d:\ SNMP \菠菜\ VER后= ./VER_SUBMODE.png

PNG

PNG = ./VER_TX_STATUS.png

目标= d:\ SNMP \菠菜\ VER

PNG后= ./VER_TX_STATUS.png

夹= d:\ SNMP \菠菜\ VER

结果= d:\ SNMP \菠菜\ Results_2015-05-08_09-21-01

重命名后的文件夹= d:\ SNMP \菠菜\ VER

+0

我意识到“after”打印不是必需的 – Kevin

+0

因此,您希望'VER'从'D:\ SNMP \ SPINACH \'移动到'D:\ SNMP \ SPINACH \ Results_2015-05-08_09-21- 01 \'? – SiHa

+0

宾果!似乎无法弄清楚这一点。 – Kevin

回答

1

试试这个:

os.rename(folder, os.path.join(results, os.path.basename(folder))) 

你的问题是在试图加入共享相同的路径两个目录。以上作品在我的机器上。

+0

谢谢!但我很好奇:'os.path.basename(文件夹)'只是返回文件夹名称,即:'VER'。当我取消注释'路径,文件夹= os.path.split(文件夹)'它给了我相同的名字,但给了我一个'BaseException'。你碰巧知道为什么? 'os.path.basename'返回一个字符串? – Kevin

+1

是的,他们都返回相同的东西 - 'VER'。'folder =“./%s”%(folder)'line会产生'。/ VER',因为我相信你的预期。也许你的工作目录不是你想象的那样? – SiHa

+0

你是对的;工作目录与文件夹所在的位置不同。谢谢! – Kevin