2015-04-06 57 views
0

我寫了從文件目錄收集文件元數據(文件名,創建日期,創建時間,最後修改數據,最後修改時間等)的Python腳本。但是,當目錄是位於外部硬盤驅動器中的路徑時,該腳本不起作用。我無法弄清楚爲什麼。如何在Python中從外部驅動器獲取文件元數據?

下面是代碼:

import os 
from os.path import basename 
import datetime 
import time 
def getSize(filename): 
    st = os.stat(filename) 
    print st 
    return st.st_size 

#get last modified date 
def getMTime(filename): 
    fileModTime = os.path.getmtime(filename) 
    return fileModTime 

#get creation date 
def getCTime(filename): 
    fileModTime = os.path.getctime(filename) 
    return fileModTime 

#get data from directory 

MyDirectory = "H:\0_tempfiles\150115_Portfolio\Work\Work\BarBackUp" 
MyExtension = ".jpg" 

#write to file 
WorkingDirectory = "C:\\Users\Admin\Downloads\demo\\" 
MyTxtFile = WorkingDirectory + "fileData6.txt" 

delim = ";" 

with open(MyTxtFile, 'wb') as f: 
    f.write(delim.join(["FILENAME", "FILESIZE", "mDATE","mTIME", 
         "cDATE","cTIME"]) + "\n") 

for root, dirs, files in os.walk(MyDirectory): 
    for file in files: 
     if file.endswith(MyExtension): 
      #get File Name 
      a = (os.path.join(root, file)) 
      #print a 
      filename = a 
      MyFileName = basename(a) 

      #get File Size 
      MyFileSize = getSize(filename)/1000 
      print MyFileName + " >>> file size: " + str(MyFileSize) + "Kb" 

      #get modification time V2 
      modTimeV2 = getMTime(filename) 
      modTimeV2 = time.strftime("%Y/%d/%m;%I:%M:%S %p", \ 
             time.localtime(modTimeV2)) 
      print "time modified: " + str(modTimeV2) 

      #get creation time 
      creTime = getCTime(filename) 
      creTime = time.strftime("%Y/%d/%m;%I:%M:%S %p", \ 
            time.localtime(creTime)) 
      print "time created: " + str(creTime) 

      #-------- 
      #write data to file 
      entry = delim.join([str(MyFileName), str(MyFileSize), \ 
           str(modTimeV2), str(creTime)]) + "\n" 
      f.write(entry) 

    print "<<<<<<everything went fine>>>>>>" 
+2

你是什麼意思與 '不工作',你有沒有錯誤,根本沒有信息?請更具體一些。 –

+0

也,實驗,看看是否所有你的目錄做的操作的失敗或只是其中的一些(或者只是看到了目錄的話)。最小和完整! – cphlewis

+0

從外部驅動器的目錄中使用沒有任何錯誤,只是沒有信息在所有的時候@EspartaPalma腳本。雖然從我的C驅動器的路徑它的作品返回數據列表。 – lv2311

回答

1

您的代碼工作正常,我。你的「MyDirectory」變量有轉義字符。嘗試在報價前添加一個R:

MyDirectory = r"H:\0_tempfiles\150115_Portfolio\Work\Work\BarBackUp" 

MyDirectory = "H:/0_tempfiles/150115_Portfolio/Work/Work/BarBackUp" 

MyDirectory = "H:\\0_tempfiles\\150115_Portfolio\\Work\\Work\\BarBackUp" 
+0

謝謝!這個提示修復了它! – lv2311

+0

只是出於好奇,你可以分享一些資源在那裏我可以閱讀更多有關文件目錄的語法和理解,爲什麼它在本地,但不與文件路徑從外部驅動器的工作? 謝謝! – lv2311

+0

這實際上是您的字符串使用問題。看看有關字符串中「轉義字符」的文檔。 https://docs.python.org/2/reference/lexical_analysis.html#string-literals – BHawk