2014-05-13 61 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