目前我在一个程序中使用:
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
答案 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!