如何扩展正则表达式以排除文件夹中的所有文件?

时间:2012-01-17 02:59:34

标签: python regex google-app-engine

在我的Google App Engine项目的app.yaml文件中,有一个skip_files部分用于排除上传给定类型的文件。如何扩展此正则表达式以排除整个gaeunit目录的上传?

skip_files: |
    ^(.*/)?(
    (app\.yaml)|
    (index\.yaml)|
    (\..*)|
    (.*\.pyc)|
    (.*\.bat)|
    (.*\.psd)|
    (Thumbs.db)|
    (.*\.svn/.*)|
    (.*\.lnk)|
    (.*\.datastore)|
    (_darcs/.*)|
    (nbproject/.*)|
    (.*\.swp)|
    (.*\.log)|
    )$

3 个答案:

答案 0 :(得分:13)

在上述正则表达式中排除nbprojectdarcs目录的方式相同。在最后一行之前的任何地方添加此行:

(gaeunit/.*)|

答案 1 :(得分:6)

我的app.yaml看起来像这样:

skip_files:
- ^(.*/)?#.*#
- ^(.*/)?.*~
- ^(.*/)?.*\.py[co]
- ^(.*/)?.*/RCS/.*
- ^(.*/)?\..*
- ^(statistics/.*)
- ^(unittests/.*)
- ^(webtests/.*)

答案 2 :(得分:2)

使用新的应用程序(截至撰写本文时),您只需将目录名称设为尾部斜杠(如app.yaml docs所示)

所以你的app.yaml可能看起来像: skip_files: - node_modules/ - ^(.*/)?app\.yaml - ^(.*/)?app\.yml - ^(.*/)?index\.yaml - ^(.*/)?index\.yml ...

但是,当尝试忽略像node_modules这样的巨大目录时,您会发现以下内容更容易处理:(- ^node_modules/*.*)。当使用INFO: Ignoring directory [node_modules]: Directory matches ignore regex.进行部署时,此解决方案将打印一条好消息,例如gcloud app deploy

不幸的是,即使您忽略了某些目录/文件,gcloud app deploy仍会将部署目录中的所有文件本地复制到/var/folders/...。这些文件不会上传到谷歌。