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")

しかし、これは正しくありません。問題の 1 つは、ファイル名だけが必要であり、それがフラスコの青写真であるため、「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に、シェルのファイル名のように展開されます。ディレクトリにも使用できます。たとえば、次のようになります。

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

「.css」で終わり、「My/dir」のサブディレクトリにあるすべてのファイル名のリストを返します。

編集: 3 行のコードの「翻訳」:

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 に答える