我想将主题档案上传到django web模块,并希望将档案中最顶层目录的名称用作主题名称.存档将始终是tar-gzip格式,并且在顶层始终只有一个文件夹(尽管其他文件可能与它平行存在),各种子目录包含模板,css,图像等等.最好的主题.
目前,基于MegaMark16中非常有用的代码,我的工具使用以下方法:
f = tarfile.open(fileobj=self.theme_file, mode='r:gz')
self.name = f.getnames()[0]
Run Code Online (Sandbox Code Playgroud)
self.theme_file是上传文件的完整路径.只要tarball中的条目顺序恰好是正确的,这种方法就可以正常工作,但在很多情况下并非如此.我当然可以遍历整个存档并手动检查正确的"名称"特征,但我怀疑有更优雅和快速的方法.有什么建议?
您将需要使用名为commonprefix的方法.
示例代码将起到以下作用:
archive = tarfile.open(filepath, mode='r')
print os.path.commonprefix(archive.getnames())
Run Code Online (Sandbox Code Playgroud)
打印值将是"归档中最顶层的目录" - 或者您的主题名称.
编辑:在进一步阅读您的规范时,如果您的文件是"最顶层目录"的兄弟,这种方法可能无法产生您想要的结果,因为公共前缀就是这样; 这只有在所有文件确实具有主题名称的公共前缀时才有效..
| 归档时间: |
|
| 查看次数: |
3002 次 |
| 最近记录: |