获取文件并以另一种方法放入列表

2024-04-28 23:50:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个目录与文件,我需要得到这些文件的清单放入另一个方法。它是在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")

但这是不对的。其中一个问题是我只需要文件名,因为它是一个flask蓝图,所以需要使用'app\u assets/directory/files'格式。你知道吗

这是basic-python-should-be-easy-101和一个学习体验,我会理解的,但是现在我又回到这个话题上,我对其他解决方案、建议等很感兴趣


Tags: 文件inappformat列表outputfilescss
2条回答

Python教程,§4.7.4,"Unpacking Argument Lists"

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

如果要获取目录中所有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')

但我不明白你是想改进它们还是原来的版本不起作用。你知道吗

相关问题 更多 >