用于为python提供系统参数的正则表达式
实际上,我有一个python脚本,它将文件名列表作为系统参数:用于为python提供系统参数的正则表达式,python,command-line-interface,sys,Python,Command Line Interface,Sys,实际上,我有一个python脚本,它将文件名列表作为系统参数: filelist=sys.argv[1:][/code> 我希望文件列表是目录中以某个前缀开头的所有文件。我认为最好的方法是使用正则表达式,但我不知道如何让它工作 就是说,我想要 python test.py '^ex' 要生成一个文件列表,其中包含工作目录中以“ex”开头的所有文件。您不必为此使用regex。一个简单的for循环可以完成这项工作。 比如说 for filename in filelist: if ex =
filelist=sys.argv[1:][/code>
我希望文件列表是目录中以某个前缀开头的所有文件。我认为最好的方法是使用正则表达式,但我不知道如何让它工作
就是说,我想要
python test.py '^ex'
要生成一个文件列表
,其中包含工作目录中以“ex”开头的所有文件。您不必为此使用regex。一个简单的for循环可以完成这项工作。
比如说
for filename in filelist:
if ex == filename[0:len(ex)]:
newFileList.append(filename)
这还没有测试出来,可能需要做一些小的调整。
当然,正则表达式是很好的工具,但上面的内容是一个简单的替代方法。这里有一个很好的资源来理解正则表达式:如果您使用了python test.py ex*
,shell将做正确的事情-它将创建文件名列表,作为sys.argv[1:]
-除非你想接受一种模式,让类似于glob.glob
的东西为你做这项工作。@sotapme:我就知道这很简单!谢谢(我使用管理了一个更复杂的版本,但您的答案更清晰)。如果你想在下面发布,我很乐意接受。另一种方法非常适合当你的脚本想要计算文件名时,shell的事情是调用方(shell)告诉脚本文件名是什么-这就是为什么Windows历来不擅长文件名扩展,我确信曾经有一段时间,每个工具都必须实现shell globbing的一个变体,因为cmd
刚刚在cli参数中传递了未触及的IIRC。您的循环可能会工作,但我仍然必须在命令行中输入所有文件,或者在命令行中指定它应该遍历目录中的所有文件。上面评论中的sotapme方法确实相当巧妙地解决了这个问题,但感谢您指出这一点。