2015-04-01 106 views
-2

我有一个文件,其中一些被命名为'network.log',而另外一些被命名为network-wTHz.log。连字符后的最后四个字符不断变化。我可以用什么通配符来匹配这两个文件?我正在使用以下if语句:在python上匹配一个文件名

if current_file == 'network.log' or current_file == 'network-*.log': 
    curr_file_path = dir_path + str('/') + str(current_file) 

上面的代码工作正常,但它只查找network.log。它没有找到具有模式network-xxxx.log的任何文件。

+0

如果你提交的代码块是一个循环遍历所有文件名中的文件列表,你可能想尝试遍历'glob.glob( 'network * .log')'而不是 – wim 2015-04-01 05:20:36

回答

1
if current_file.startswith('network') and current_file.endswith('.log') 
+0

谢谢。有用。从哪个模块开始和结束? – 2015-04-01 05:59:44

+0

'startswith'和'endswith'都是'str' API(https://docs.python.org/2/library/stdtypes.html) – 2015-04-01 14:24:06

0

使用正则表达式。

import re 
if re.match("^network(-.*).log$", current_file): 
    .... 
+0

的一部分。谢谢 – 2015-04-01 06:00:15

0

使用glob,它是专为这个东西:

import glob 

for file_with_path in glob.iglob('/path/to/directory/network*.log'): 
    print(file_with_path) 
0

不要在Python的方式。 glob的使用

import glob 
glob.glob('network*.log') 

上面的代码返回匹配模式

相关问题