请教:急需解决一道python的编程题目。

请教:急需解决一道python的编程题目。

Scenario:

    There are image files arranged in file systems like this:
    C:\images\2006\05\03\P98.jpg
    C:\images\2006\05\03\P38.jpg
    C:\images\2006\05\04\P68.jpg
    C:\images\2006\05\05\P88.jpg

Write a Python program "DateStamp.py" so that running:
C:\python24\bin\python.exe DateStamp.py C:\images  
will find all .jpg files and renamed the files as:

    C:\images\2006\05\03\20060503_P98.jpg
    C:\images\2006\05\03\20060503_P38.jpg
    C:\images\2006\05\04\20060504_P68.jpg
    C:\images\2006\05\05\20060505_P88.jpg


有人会做吗?希望能给出代码,非常感谢!
先测试一下, 如果没问题, 把os.renname(old_file_name, new_file_name)一句的注释取消就可以实际用了.

import os
import re

def matchdir(path):
    if len(re.findall("\d+\\\\\d+\\\\\d+$", path)) == 0:
        return False
    # split the path and then form a prefix
    match = re.findall("\d+", path)
    if len(match) == 3:
        return match[0]+match[1]+match[2]+"_"
    else:
        return False

def group_rename(dir_name):
    for root, dirs, files in os.walk(dir_name):
        pre_filename = matchdir(root)
        if pre_filename:
            for f in files:
                if f[-3:] == "jpg":
                    old_file_name = os.path.join(root, f)
                    new_file_name = os.path.join(root, pre_filename+f)
                    # the following line is only for test, so can be removed
                    print old_file_name, new_file_name
                    # if no problem, remove the comment symbol
                    # os.rename(old_file_name, new_file_name)
        
group_rename("c:\\image")

1. 楼上的方法很笨,提示一下,''.join(os.path.realpath(file).strip('C:\image\').split(os.sep))
没必要用re
2. 楼上的英文太差了
3. 以后不要帮别人做作业


QUOTE:
原帖由 ecloud 于 2006-6-18 23:43 发表
1. 楼上的方法很笨,提示一下,''.join(os.path.realpath(file).strip('C:\image\').split(os.sep))
没必要用re
2. 楼上的英文太差了
3. 以后不要帮别人做作业

1 用re适用性会好一点, 硬编码适应性差一点
2 本人的英文比英国人差很多
3 以后不要用教训人的态度说话
非常感谢楼上两位的指点。
To eclude:你可以说的详细点吗?
os.path有一个拆分文件名后缀的方法 splitext(),然后再判断简单一些。另外,只判断[:-3],碰上:

aaaajpg就不对了。只是猜测,实际中可能不会出现。简单的可以[:-4] == '.jpg'


QUOTE:
原帖由 stone.zh 于 2006-6-19 00:02 发表


1 用re适用性会好一点, 硬编码适应性差一点
2 本人的英文比英国人差很多
3 以后不要用教训人的态度说话

1 python之所以是python,就是因为其高度抽象性,如果喜欢玩一个一个数char的游戏,干脆用C好了,指针更适合你
python是解释语言,程序的函数越少效率越高,可以用一行解决的问题不必要用10多行写个def
2 那就最好用中文写注释
3 我教训的是那个找别人做作业的人
用.endswith('.jpg')似乎要好一些