2014-05-13 60 views
0

我一直在網上四處尋找方法來存儲在蟒蛇的信息,我遇到了各種不同的方式來做到這一點來存儲文件信息。我想來計算器,看看你們「誰是更有經驗的Python」會在這種情況下建議。建議使用python

我做一個for循環收集特定目錄中的所有文件。我想要做的是收集每個文件以及它的文件大小,文件名和文件類型。你們會爲此推薦什麼?下面使用的方法我知道是不好的做法。

import os 

cacheDir = os.path.normpath('Q:\Qoros\Project_Assets\car\PublishedMXS') 
mxsFiles = [] 
mxsNames = [] 
maxFilesize = [] 

for file in os.listdir(cacheDir): 
    if file.endswith(".mxs"): 
     filePath = cacheDir + '/' + file 
     prefix = file.split('_') 

     mxsFiles.append(filePath) 
     mxsNames.append(prefix[0]) 
     # maxFilesize.append(filesize) 
+1

您打算如何使用這些信息一旦你明白了嗎? –

+0

[標準pickle模塊(https://docs.python.org/2/library/pickle.html)可以是有益的,如果兩個作者和讀者是Python腳本。 – jedwards

+0

我將在其基於文件類型用於導入到3dsMax中和Maya項目列表的對話框即時創建使用。 – JokerMartini

回答

1
from collections import namedtuple 
import glob 
import os 

cache_dir = os.path.normpath('Q:\Qoros\Project_Assets\car\PublishedMXS') 
filespec = "*.mxs" 

FileData = namedtuple("FileData", ["name", "prefix", "size"]) 

files = [] 
for fname in glob.glob(os.path.join(cache_dir, filespec)): 
    name = os.path.abspath(fname) 
    prefix = fname.split("_")[0] 
    size = os.stat(fname).st_size 
    files.append(FileData(name, prefix, size)) 
+0

非常聰明的做法。我不知道能夠做命名元組。這很有趣。謝謝你的建議答案。我將不得不檢查這一點。 – JokerMartini