Python CLI จัดการข้อความในไฟล์ ไม่ต้องเปิดให้วุ่นวาย

สวัสดีครับ เพื่อนๆ ทุกคน

วันนี้ ผมมีเรื่องน่าสนใจเกี่ยวกับ python cli ที่จะช่วยให้งานจัดการไฟล์ข้อความของเราง่ายขึ้นเยอะเลยครับ แบบว่าไม่ต้องเปิดไฟล์มานั่งแก้ทีละบรรทัดให้วุ่นวายเลยนะ เราจะใช้ Python สร้างเครื่องมือเล็กๆ ที่รันจาก Command Line ได้เลย ลองดูตัวอย่างกันเลยนะครับ

1. เปลี่ยนข้อความในไฟล์ ง่ายๆ เลย

สมมุติว่าเรามีไฟล์ชื่อ my_data.txt ที่มีข้อความแบบนี้:

ชื่อ: สมชาย
เบอร์โทร: 081-234-5678
อีเมล: [email protected]

แล้วอยากจะเปลี่ยน "สมชาย" เป็น "สมหญิง" นะครับ เราสามารถเขียน Python CLI ง่ายๆ แบบนี้ได้เลย:

# replace_text.py
import argparse

def replace_in_file(filepath, old_text, new_text):
    with open(filepath, 'r', encoding='utf-8') as file:
        content = file.read()
    new_content = content.replace(old_text, new_text)
    with open(filepath, 'w', encoding='utf-8') as file:
        file.write(new_content)
    print(f"เปลี่ยน '{old_text}' เป็น '{new_text}' ใน '{filepath}' เรียบร้อยแล้วครับ")

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='เปลี่ยนข้อความในไฟล์.')
    parser.add_argument('filepath', type=str, help='ตำแหน่งไฟล์ที่จะแก้ไข')
    parser.add_argument('old_text', type=str, help='ข้อความเก่าที่ต้องการเปลี่ยน')
    parser.add_argument('new_text', type=str, help='ข้อความใหม่ที่จะใส่เข้าไป')

    args = parser.parse_args()
    replace_in_file(args.filepath, args.old_text, args.new_text)

จากนั้น เราก็รันจาก Terminal ได้แบบนี้เลยครับ:

python replace_text.py my_data.txt สมชาย สมหญิง

แค่เนี่ยะะะะะะ ข้อความในไฟล์เราก็จะเปลี่ยนเป็น "สมหญิง" แล้วนะครับ เจ๋งไหมล่ะ!

2. ดึงข้อมูลเฉพาะที่ต้องการออกมาดู

บางที เราอาจจะอยากดึงแค่บรรทัดที่มีคำว่า "เบอร์โทร" ออกมาดูเฉยๆ นะครับ เราก็ปรับโค้ดนิดหน่อยได้แบบนี้:

# extract_lines.py
import argparse

def extract_lines_with_keyword(filepath, keyword):
    found_lines = []
    with open(filepath, 'r', encoding='utf-8') as file:
        for line in file:
            if keyword in line:
                found_lines.append(line.strip())

    if found_lines:
        print(f"เจอข้อมูลที่มี '{keyword}' ครับ:")
        for line in found_lines:
            print(line)
    else:
        print(f"ไม่เจอข้อมูลที่มี '{keyword}' ใน '{filepath}' ครับ")

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='ดึงบรรทัดที่มี Keyword ที่ต้องการ.')
    parser.add_argument('filepath', type=str, help='ตำแหน่งไฟล์')
    parser.add_argument('keyword', type=str, help='Keyword ที่ต้องการค้นหา')

    args = parser.parse_args()
    extract_lines_with_keyword(args.filepath, args.keyword)

แล้วก็รันแบบนี้นะครับ:

python extract_lines.py my_data.txt เบอร์โทร

ผลลัพธ์ที่ได้ก็จะโชว์แค่บรรทัดที่มีคำว่า "เบอร์โทร" ออกมาให้เราเห็นเลยครับ สะดวกมากๆ

3. จัดการข้อความให้เป็นระเบียบ (Trim Whitespace)

บางทีข้อมูลในไฟล์ของเราอาจจะมีช่องว่างเกินมา หน้า-หลัง แบบนี้:

  ชื่อ: สมชาย    
เบอร์โทร: 081-234-5678 
   อีเมล: [email protected]

เราก็เขียน CLI ให้ช่วยลบช่องว่างพวกนี้ออกได้นะครับ โดยใช้ stringmanipulation อย่าง .strip() แบบนี้เลย:

# trim_whitespace.py
import argparse

def trim_file_lines(filepath):
    cleaned_lines = []
    with open(filepath, 'r', encoding='utf-8') as file:
        for line in file:
            cleaned_lines.append(line.strip())

    with open(filepath, 'w', encoding='utf-8') as file:
        file.write('\
'.join(cleaned_lines))
    print(f"จัดการลบช่องว่างเกินใน '{filepath}' เรียบร้อยแล้วครับ")

if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='ลบช่องว่างหน้า-หลังบรรทัดในไฟล์.')
    parser.add_argument('filepath', type=str, help='ตำแหน่งไฟล์ที่จะแก้ไข')

    args = parser.parse_args()
    trim_file_lines(args.filepath)

จากนั้นก็รันแบบนี้นะครับ:

python trim_whitespace.py my_data.txt

ไฟล์ my_data.txt ของเราก็จะดูเป็นระเบียบขึ้นมาเลยครับ ไม่มีช่องว่างเกินมาให้กวนใจแล้ว

เป็นไงบ้างครับ เพื่อนๆ สามารถเอาเทคนิค python cli กับ stringmanipulation แบบนี้ ไปประยุกต์ใช้กับงานของเราได้เยอะเลยนะครับ ไม่ว่าจะจัดการ Log File, แก้ไข Config File หรือปรับแต่งข้อมูลต่างๆ

ลองเอาไปเล่นดูนะครับ ผม cii3.net หวังว่าจะเป็นประโยชน์ไม่มากก็น้อยนะครับ แล้วเจอกันใหม่บทความหน้าครับ!

Read more

ไอลีน กู: ตำนานนักสกีฟรีสไตล์ผู้พลิกโฉมวงการและความหมายของชัยชนะ

ไอลีน กู: ตำนานนักสกีฟรีสไตล์ผู้พลิกโฉมวงการและความหมายของชัยชนะ

เจาะลึกเรื่องราวของ Eileen Gu นักสกีฟรีสไตล์ผู้สร้างประวัติศาสตร์ในโอลิมปิก 2026 สถิติที่ไม่เคยมีมาก่อน ประเด็นถกเถียง และความแข็งแกร่งส่วนตัวที่ทำให้เธอก้าวสู่ระดับโลก

By ทีมงาน devdog
วันพระ: คู่มือฉบับสมบูรณ์สำหรับพุทธศาสนิกชนและผู้สนใจยุคใหม่

วันพระ: คู่มือฉบับสมบูรณ์สำหรับพุทธศาสนิกชนและผู้สนใจยุคใหม่

เจาะลึกวันพระและความสำคัญของวันมาฆบูชา 2569 ทั้งวันหยุดราชการ ธนาคาร กิจกรรมเวียนเทียนต้นไม้ และผลกระทบต่อบริการขนส่ง เตรียมตัววางแผนทำบุญและพักผ่อน

By ทีมงาน devdog
ถอดรหัสรักแท้: "บังมัดคลองตันต้นข้าว" เรื่องราวที่สะท้อนการให้อภัยและการเริ่มต้นใหม่

ถอดรหัสรักแท้: "บังมัดคลองตันต้นข้าว" เรื่องราวที่สะท้อนการให้อภัยและการเริ่มต้นใหม่

เจาะลึกงานวิวาห์ "บังมัดคลองตัน" กับ "ต้นข้าว มิสแกรนด์" พร้อมเหตุผลจากใจเจ้าสาวที่เลือกความรักเหนือกาลเวลาและคำวิจารณ์ สู่การเริ่มต้นชีวิตคู่ที่สะท้อนการให้อภัย

By ทีมงาน devdog
ไฮไลท์บอลไทยลีก 2: มหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรงสู่เส้นทางเพลย์ออฟ

ไฮไลท์บอลไทยลีก 2: มหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรงสู่เส้นทางเพลย์ออฟ

เจาะลึกไฮไลท์บอลไทยลีก 2 ของมหาสารคาม เอสบีที เอฟซี กับฟอร์มร้อนแรง ชัยชนะสำคัญจาก ชิตชนก และบทบาทโค้ชดุสิต สู่เส้นทางเพลย์ออฟที่น่าจับตา!

By ทีมงาน devdog