ผมไม่ทราบว่า มันเรียกวิธีการนี้ว่าอะไรเพราะหัดเขียนเป็นงานอดิเรกหนะครับ
ผมหัดเขียนโปรแกรม 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 ยังคงเก็บ เอาไว้ ไม่ต้องเซ็คค่าหรือเคลียตัวแปรทิ้ง(เผื่อเปลี่ยนกลับ) เวลารันแล้วมันจะเคลียตัวแปรทิ้งหมดต้องกำหนดค่าใหม่
ขอบคุณครับ
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 ยังคงเก็บ เอาไว้ ไม่ต้องเซ็คค่าหรือเคลียตัวแปรทิ้ง(เผื่อเปลี่ยนกลับ) เวลารันแล้วมันจะเคลียตัวแปรทิ้งหมดต้องกำหนดค่าใหม่
ขอบคุณครับ