0

我有一个包含文件的目录,我需要获取这些文件的列表以放入另一个方法。它是在 webassets (https://github.com/miracle2k/webassets) 的上下文中,所以它看起来像这样,具体情况:

app_css = Bundle('app_assets/css/base.css',
                 'app_assets/css/layout.css',,
                 output='output.css',
                 filters='cssmin')

我想成为这样:

app_css = Bundle( {any number of files in a directory},
                 output='output.css',
                 filters='cssmin')

所以我需要检索一个可能不同且不固定的文件列表,然后将该列表放入另一个函数中,而不是对每个更改进行硬编码。

我从上次不成功的尝试中得到了这个:

csspath = "{}/static/css".format(os.path.dirname(__file__))
csss = [["app_assets/css/{}".format(files)] for files in os.listdir(csspath)]
app_css = Bundle("{}".format(*csss), output="packed.css", filters="cssmin")

但这不对。其中一个问题是我只需要文件名,因为它是一个烧瓶蓝图,需要使用“app_assets/directory/files”格式。

这是 basic-python-should-be-easy-101 和学习经验,我会明白的,但现在我回到这个我对其他解决方案、建议等感兴趣。

4

2 回答 2

0

如果要获取目录中所有css文件的列表,可以使用该glob模块:

my_files = glob.glob('path_to_the_directory/*.css')

基本上glob会像 shell 中的文件名一样扩展。您也可以将它用于目录。例如这个:

glog.glob('My/dir/*/*.css')

将返回以“.css”结尾且位于“My/dir”子目录中的所有文件名的列表。

编辑:您的三行代码的“翻译”:

csspath = os.path.join(os.path.dirname(__file__), 'static', 'css')
csss = [os.path.join('app_assets', 'css', fname) for fname in os.listdir(csspath)]
app_css = Bundle(*csss, output='packed.css', filters='cssmin')

但我不明白您是否只是想改进它们或原始版本不起作用。

于 2012-09-14T16:05:01.563 回答
0

Python 教程,§4.7.4,“解包参数列表”

app_css = Bundle(*['app_assets/css/base.css',
                 'app_assets/css/layout.css'],
                 **dict(output='output.css',
                 filters='cssmin'))
于 2012-09-14T16:14:58.730 回答