python os.rename แบบ ใส่ parameter ได้ 2 ชนิด

ผมไม่ทราบว่า มันเรียกวิธีการนี้ว่าอะไรเพราะหัดเขียนเป็นงานอดิเรกหนะครับ

ผมหัดเขียนโปรแกรม rename ไฟล์ ใน directory ที่ระบุ โดยใส่ชื่อ directory เป็น prefix ของชื่อไฟล์

#!/usr/bin/env python
# coding: utf-8

import os
config_nu = 3
namenumber = lambda n : '{0}{1}'.format(os.path.splitext(n)[0].zfill(config_nu),os.path.splitext(n)[-1])

def filerename_with_path(dirname):
    try :
        os.chdir(dirname)
        foldername = os.path.basename(os.getcwd())
        files = os.listdir(dirname)
        for f in files:
            if foldername not in f:
                os.rename(f, '{}_{}'.format(foldername,namenumber(f)))
    except Exception as e:
        print(e)

def main():
    filerename_with_path(r'R:\test')

if __name__=='__main__':
   main() 

อันนี้รับค่า dirname ด้วย full path มันก็ทำงานได้ดีอยู่ ตรงตามต้องการ แต่ ถ้าผมพยายามจะสร้าง การจับคู่ ระหว่าง ชื่อไฟล์เก่า กับใหม่ ไว้ด้วยกันก่อน (เผื่อ rename กลับคืนเหมือนเดิมก่อนรัน)

def rename_dict(dict_rename_set):
     for odname, nwname in dict_rename_set.items():
        os.rename(odname, nwname)
คำถาม :
ไม่ทราบว่า ทำยังไงให้สร้างฟังชั่นแค่อันเดียว แต่รับค่าตัวแปร เป็น str ก็ทำแบบหนึ่ง ถ้ารับมาเป็น dict ก็ทำอีกแบบหนึ่งครับ โดยถ้า dict ยังคงเก็บ เอาไว้ ไม่ต้องเซ็คค่าหรือเคลียตัวแปรทิ้ง(เผื่อเปลี่ยนกลับ) เวลารันแล้วมันจะเคลียตัวแปรทิ้งหมดต้องกำหนดค่าใหม่

ขอบคุณครับ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่