我已经把需要匹配的项目的一些代码放在一起作为文件名的开头。以下是在Windows中工作的代码。来自Windows和Linux的正则表达式的不同结果?
for root, dirs, files in os.walk(up_path):
files.sort()
total_files += len(files)
print total_files
for fn in files:
print fn
filename_zero, extension = os.path.splitext(fn)
path2 = os.path.join(root, fn)
ID = re.match('^/d{1,10}', fn).group()
print ID
在Windows中,如果一个文件被命名为1234567-1.jpg
,从打印ID的结果将是1234567
。
但是,在Linux中,我得到一个Nonetype error
,其中打印ID返回NONE
。
我知道这是什么意思,没有匹配,因此没有生成ID。
由于唯一的区别是从Windows迁移到Linux,两个系统之间的不同要求是什么?
如何按预期做到这一点?
您的代码也不能匹配在Windows中任何东西,如'/ d {1 ,10}'匹配一个文字正斜杠和1到10个'd'字符。由于'fn'是一个没有目录路径的文件名,因此在这个名称中不会有斜杠。 –
@MartijnPieters在哪里他把斜杠放在文件名中? –
@AvinashRaj:斜杠在* pattern *中。它永远不会*在*的文件名。 –