【问题标题】:Why does finding files with regular expressions put the files in a different format than just listing them?为什么使用正则表达式查找文件会将文件置于与仅列出它们不同的格式中?
【发布时间】:2017-06-12 01:58:16
【问题描述】:

我正在编写一个基于正则表达式查找输入文件的 shell 脚本。然后将这些输入文件作为参数传递给 python 脚本。我的代码如下:

file_pattern=*test[0-9]*
files=$(ls -f $file_pattern)
python my_script.py $files

但是,我发现 $files 不会将文件名作为用逗号分隔的字符串传递。我目前的解决方法是手动列出所有所需的输入文件,如下所示:

files=(test0.csv test1.csv test2.csv)

这会将“test0.csv,test1.csv,test2.csv”作为逗号分隔的字符串传递给python(这是我想要的,因为我可以通过分隔符将字符串拆分为列表),但这可以是对许多文件来说很乏味。所有输入文件都将遵循相同的命名约定,因此在我看来,正则表达式是最好的选择。任何人都知道为什么/如何用正则表达式解决这个问题?谢谢!

【问题讨论】:

  • 那不是正则表达式;这是一个模式。您从哪里得到数组生成逗号分隔字符串的想法?
  • 抱歉术语混淆。当我使用 sys.argv[1] 访问我的 python 脚本中的命令行参数时,结果是一个逗号分隔的字符串。

标签: python regex shell file-io


【解决方案1】:

使用数组:

file_pattern=*test[0-9]*
files=( $file_pattern )
python my_script.py "${files[@]}"

或者直接使用模式

python my_script.py *test[0-9]*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    相关资源
    最近更新 更多