การสร้างโฟร์เดอร์ให้ไม่ติดปัญหาชื่อโฟร์เดอร์ซ้ำ

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
fonfonn
PHP VIP Members
PHP VIP Members
โพสต์: 4983
ลงทะเบียนเมื่อ: 11/07/2022 9:28 am

การสร้างโฟร์เดอร์ให้ไม่ติดปัญหาชื่อโฟร์เดอร์ซ้ำ

โพสต์ที่ยังไม่ได้อ่าน โดย fonfonn »

ในบทความนี้จะมาแนะนำวิธีก่ารสร้างโฟร์เดอร์ในภาษา python เพื่อไม่ให้ติดปัญหาชื่อของโฟร์เดอร์ที่สร้างซ้ำกับโฟร์เดอร์ที่มีอยู่แล้ว โดยแยกเป็น 2 กรณี คือแบบแรกเราต้องการเก็บโฟร์เดอร์นั้นไว้ และมีการสร้างใหม่เรื่อยๆ และในกรณีที่สอง คือเมื่อสร้างเสร็จแล้วและมีการใช้งานหรือเข้าฟังก์ชั่นแล้วให้ลบโฟร์เดอร์นั้นทิ้ง ซึ่งใช้ library ที่ชื่อว่า os ในการสร้างโฟร์เดอร์ และ ใช้ shutil.rmtree ในการลบโฟร์เดอร์

กรณีที่ 1 ต้องการเก็บโฟร์เดอร์ที่สร้างไว้ เมื่อมีการรันโปรแกรมครั้งต่อไปจะไม่ติดปัญหาชื่อโฟร์เดอร์ซ้ำ

โค้ด: เลือกทั้งหมด

import os
from datetime import datetime
dt = datetime.now()
ts = str(datetime.timestamp(dt))
directory = "pdf_to_image"+ts
parent_dir = r'C:\Users\fonfo\PycharmProjects\pythonProject13'
path = os.path.join(parent_dir, directory)
os.mkdir(path)
จากโค้ดเราใช้วิธีการบวก timestamp ลงบนชื่อไฟล์ โดย timestamp จะรันต่อไปเรื่อยๆไม่ซ้ำกัน ดังนั้นการรันเพื่อสร้างโฟร์เดอร์แต่ละครั้งชื่อจะไม่ซ้ำกัน
ผลที่ได้
มีการสร้างโฟร์เดอร์ที่รันเลข timestamp ไปเรื่อยๆ เพื่อไม่ให้มีชื่อซ้ำกัน
โฟร์เดอร์ที่ได้หลังจากกดสร้างโฟร์เดอร์ติดๆกัน
โฟร์เดอร์ที่ได้หลังจากกดสร้างโฟร์เดอร์ติดๆกัน
Python Knowledge-1.png (11.49 KiB) Viewed 495 times

กรณีที่ 2 ไม่ต้องการเก็บโฟร์เดอร์ที่สร้างไว้ เมื่อมีการรันโปรแกรมหรือใช้งานเสร็จให้ทำการลบโฟร์เดอร์นั้นทิ้ง

โค้ด: เลือกทั้งหมด

import os
import shutil
import zipfile as z

directory = "pdf_to_image"
parent_dir = r'C:\Users\fonfo\PycharmProjects\pythonProject13'
path = os.path.join(parent_dir, directory)
os.mkdir(path)

for root, dirs, files in os.walk(directory):
    zipf = z.ZipFile('pdf_to_image.zip', 'w')
    for file in files:
        zipf.write(os.path.join(root, file),r'/pdf_to_image/' + file)
    zipf.close()

shutil.rmtree(path)
จากโค้ดเป็นการสร้างโฟร์เดอร์ จากนั้นทำการ zipโฟร์เดอรืที่สร้างขึ้น จากนั้น ทำการสั่งลบไฟล์ เมื่อสั่งรันครั้งต่อไปก็จะไม่ติดปัญหาชื่อโฟร์เดอร์ซ้ำเช่นเดียวกัน เพราะโฟร์เดอร์เดิมได้ถูกลบทิ้งไปแล้ว
ผลลัพธ์ที่ได้
ไฟล์ zip ถูกสร้างขึ้นจากโฟร์เดอร์ที่ลบทิ้งไปแล้ว
ไฟล์ zip ถูกสร้างขึ้นจากโฟร์เดอร์ที่ลบทิ้งไปแล้ว
Python Knowledge-1.png (13.54 KiB) Viewed 495 times
จากการทำงาน สรุปได้ว่าหากเราทำการสร้างโฟร์เดอร์เพื่อเก็บไฟล์ในโปรเจคนั้นๆ ถ้าเราต้องการเก็บโฟร์เดอร์ที่สร้างไว้เพื่อดูผลลัพธ์ภายในโฟร์เดอร์เราสามารถใช้วิธีการบวก timestamp ลงไปใน ชื่อโฟร์เดอร์ เพื่อให้ชื่อโฟร์เดอร์รันต่อไปโดยไม่ซ้ำกัน แต่ถ้าหากไม่ต้องการเก็บโฟร์เดอร์ที่สร้างไว้คือเมื่อมีการใช้งานเสร็จให้ลบโฟร์เดอร์ทิ้ง โดยเมื่อรันครั้งต่อไปจะไม่ติดปัญหาที่ชื่อโฟร์เดอร์ซ้ำ ซึ่งวิธีนี้ก็สามารถแก้ปัญหา การสร้างโฟร์เดอร์ให้ไม่ติดปัญหาชื่อโฟร์เดอร์ซ้ำได้ เช่นเดียวกัน ขึ้นอยู่กับการเรียกใช้งานของแต่ละงานว่ามีความจำเป็นที่จะต้องเก็บโฟร์เดอร์ที่สร้างนั้นไว้ไหม ตัวอย่างเช่น การนับไฟล์ภาพที่แปลงจาก PDF ในโฟร์เดอร์ที่สร้างขึ้น เป็นการสร้างโฟร์เดอร์เพื่อดูผลลัพธ์ภายในโฟร์เดอร์ จึงใช้วิธีการ แบบกรณีที่ 1 ในการสร้างโฟร์เดอร์
you're the only one treasure💎

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 98