Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于为python提供系统参数的正则表达式_Python_Command Line Interface_Sys - Fatal编程技术网

用于为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 =

实际上,我有一个python脚本,它将文件名列表作为系统参数:

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方法确实相当巧妙地解决了这个问题,但感谢您指出这一点。