2013-07-25 83 views
0

我正在python中製作一個程序,它將複製excel文件,根據它們的內容重命名它們,然後將它們保存在不同的文件夾中。Python反斜槓錯誤

雖然我在代碼中有反斜槓的問題。任何想法,我可以如何使這項工作?

import os 
import os.path 
import csv 
import xlrd 
import datetime 
import glob 
import shutil 

def newfilename(name): 
    book = xlrd.open_workbook(name) 
    sheet = book.sheet_by_index(0) 
    name = sheet.cell(6,6).value 
    name = name[:10] 
    pn = sheet.cell(6,1).value 
    date = sheet.cell(4,0).value 
    try: 
     datenew = datetime.datetime(*xlrd.xldate_as_tuple(date, book.datemode)) 
     except: 
     datenew = "00/00/00" 
    print(datenew) 
    datenew = str(datenew) 
    print(datenew) 
    datenew = datenew[:10] 
    newpn = "" 
    for i in pn: 
     try: 
      rand = int(i) 
      newpn = newpn + str(rand) 
     except: 
      pass 
    return str(newpn+"-"+str(name)+"-PackagingForm-"+datenew) 


def excelwriter(old_file_path,new_file_path): 
    for subfolder_name in os.listdir(old_file_path): 
     print(subfolder_name) 
     subfolder_path = os.path.join(old_file_path,subfolder_name) 
     print(subfolder_path) 
     print(os.listdir(os.path.join(old_file_path,subfolder_path))) 
     for file_name in os.listdir(os.path.join(old_file_path,subfolder_path)): 
      file_path = os.path.join(subfolder_path,file_name) 
      print("file path" +file_path) 
      try: 
       new_file_name = newfilename(file_path) 
      except: 
       new_file_name = "NEW" + file_name 
      new_file_path = os.path.join(new_file_path,subfolder_name,new_file_name) 
      new_file_path.replace(r"\\","/") 
      print(str(new_file_path)) 
      print(str(new_file_path)+".xlsx") 
      if file_name[-4:]=="xlsx": 
       os.rename(str(file_path),str(new_file_path)+".xlsx") 
      elif file_name[-3:]=="xls": 
       os.rename(str(file_path),str(new_file_path)+".xls") 
      elif file_name[-3:]=="pdf": 
       os.rename(str(file_path),str(new_file_path)+".pdf") 
      else: 
       pass 

從這裏,我得到這個錯誤:

Traceback (most recent call last): 
    File "<pyshell#22>", line 1, in <module> 
    excelwriter(r'C:\Users\harridr3\Desktop\New Test',r'C:\Users\harridr3\Desktop\New folder') 
    File "C:\Users\harridr3\Desktop\python testing\renaming.py", line 52, in excelwriter 
    os.rename(str(file_path),str(new_file_path)+".xlsx") 
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'C:\\Users\\harridr3\\Desktop\\New folder\\ABL Lights\\2344327-ABL Lights-PackagingForm-00/00/00.xlsx' 
+0

'new_file_path.replace(R 「\\」, 「/」)'我想你需要在這裏跌落'r'。我不確定這是怎麼一回事。另外看看[shutil.move](http://docs.python.org/2/library/shutil.html#shutil.move) –

+0

你的問題是目標目錄不存在,你應該嘗試使目錄結構首先用'os.makedirs'或類似的。 – Wessie

回答

1

你不能有向前的文件名斜線,這似乎是在代碼中錯誤的來源(我假設你不需要爲每個新文件指定幾個新目錄)。

嘗試:

datenew = "00-00-00" 
+0

嗯,我認爲在技術上正斜槓是可以的,但他們仍然是問題的原因,因爲他們期望有幾層不存在的目錄。 –

+0

是的,你似乎可以在python中混合正向和反向斜線。 –