2012-09-25 165 views
7

試圖熟悉python的標準庫並在我的Windows機器上進行一些操作。使用python 2.7我有下面的小腳本,用於查看目錄,並在從文件名中刪除數字後重命名其中的所有文件。我得到一個類型錯誤,說:「必須編碼字符串沒有NULL字節,而不是STR」python TypeError:必須是不帶空字節的編碼字符串,而不是str

它調用了線5和18,注意以下,其中即時通訊使用os.path.exists。

任何幫助將不勝感激!

import os, re, string, glob 

    path = os.path.normpath('C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest') 

ln5:if os.path.exists(path): 
     print "path exists at " + path 
     for file in glob.glob(os.path.join(path, '*.jpg')): 
      new_path = os.path.join(os.path.dirname(file), re.sub('\d', '', os.path.basename(file))) 
line18:  if not os.path.exists(new_path): 
       os.rename(file, new_path) 

回答

1

原來是單反斜槓問題。 我以爲os.path.normpath會按照os的要求格式化路徑。

10

「......照片\修改\ 0 PyTest」

其採取的\ 0作爲空字符。你必須使用\\逃脫\,或只是把一個r字符串之前使其原料:

r'C:\Users\me\Photo Projects\Project Name\Project Photos\Modified\0-PyTest' 
0

如果你給一個路徑URL之前將它添加R:

(r'E: \ Images \ 1.png')

+0

嗨,歡迎來到SO!這個問題很古老,並且已經得到了非常類似的答覆,因此無需再次發佈。毫無疑問,其他人會提出需要你幫助的新問題。 – Tom

相關問題