Python cp正则表达式:复制一个未知的目录

时间:2014-05-24 01:10:15

标签: python regex python-3.x

目前我在一个程序中使用:

os.system('cp /run/user/1000/gvfs/*/store_00010001/DCIM/100ND610/* /home/$USER/Pictures/$(date +%F)/')

但我想用shutil.copy为我做复制。我有一个问题。在Bash中,我可以有一个具有正则表达式/通配符的路径,例如*?,例如:/run/user/1000/gvfs/*/store_000?0001/,但是如何在python中为路径执行此操作?

我正在使用Python 3.3

2 个答案:

答案 0 :(得分:1)

以下是在您只期待一场比赛时使用glob的简洁方法:

import glob

unknown_dir = "/run/user/1000/gvfs/gphoto*/"
matches = glob.glob(unknown_dir)

if len(matches) == 0:
    raise Exception('No matches')

if len(matches) > 1:
    raise Exception('Too many matches')

known_dir = matches[0]

如果您期望零或多个匹配,您可以简单地遍历匹配列表并依次处理每个匹配项:

import glob

unknown_dir = "/run/user/1000/gvfs/gphoto*/"
for match in glob.glob(unknown_dir):
    # use match

答案 1 :(得分:0)

@eryksun通过推荐glob回答了我的问题。对于未来看这个问题的人,以下是我如何使用它:

import os
import glob

unkown_dir = "/run/user/1000/gvfs/gphoto*/"
known_dir = str(glob.glob(unkown_dir)).strip("[]'")

我需要将路径作为字符串,因此我使用str()和strip()。

我现在可以使用shutil.copy了。谢谢@eryksun!