【问题标题】:Command line regular expression '*' and python sys.argv命令行正则表达式'*'和python sys.argv
【发布时间】:2015-07-09 20:02:20
【问题描述】:

我有一个文件夹,其中包含多个相差一个数字的文件(foo1.inp、foo2.inp、foo3.inp、...)。我想传递给 python,使用命令行参数和 sys.argv,像 'foo*.inp' 这样的字符串,这样我就可以列出所有文件的列表。但是,当我执行 python script.py foo*.inp 时传递给 python 的参数最终是文件夹中首先列出的任何文件:foo1.inp,而不是 foo*.inp。

我怎样才能正确地做到这一点?提前致谢。

【问题讨论】:

  • 你的 shell 解释不带引号的通配符......但它可能正是你想要的。为什么不直接使用所有 sys.argv 而不是第一个参数?
  • 你说得对,我只需要一个包含所有文件名的列表。我并没有停下来想现在我的 sys.argv 将包含所有文件名。我只是专注于 sys.argv[1],我希望在其中找到“foo*.inp”。谢谢。

标签: python regex


【解决方案1】:
python myscript.py "foo*.inp"

我认为应该有效(而不是扩大你的范围)

否则,如 cmets 中所述,您的外壳将 foo*.inp 扩展为文件列表,然后将它们传递给您的脚本......您的外壳将始终这样做......解决方案是引用glob 模式(它不是正则表达式...)假设您实际上想要 glob 模式而不是它匹配的文件

【讨论】:

    猜你喜欢
    • 2012-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多