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

เจาะลึก UEFA Champions League: สุดยอดความตื่นเต้นที่แฟนบอลทั่วโลกรอคอย

เจาะลึก UEFA Champions League: สุดยอดความตื่นเต้นที่แฟนบอลทั่วโลกรอคอย

เจาะลึก UEFA Champions League การแข่งขันระดับโลกที่แฟนบอลรอคอย พร้อมติดตามข่าวสารรอบโลกและการถ่ายทอดสดสุดพิเศษ ไม่พลาดทุกความมันส์!

By ทีมงาน devdog
Google อัปเกรด Chrome ครั้งใหญ่ เพิ่มฟีเจอร์ "Skills" ให้ AI จำคำสั่งโปรดของคุณ

Google อัปเกรด Chrome ครั้งใหญ่ เพิ่มฟีเจอร์ "Skills" ให้ AI จำคำสั่งโปรดของคุณ

อัปเกรด Chrome ด้วยฟีเจอร์ Skills ใหม่ ให้ AI จดจำและเรียกใช้คำสั่งโปรดของคุณได้ทันที ไม่ต้องพิมพ์ซ้ำ พร้อมเชื่อมต่อ Gemini ทั่วระบบ

By ทีมงาน devdog
CARTIER Santos-Dumont โฉมใหม่: เมื่อออบซิเดียนผสานตำนานนักบิน สู่ความงามเหนือกาลเวลา

CARTIER Santos-Dumont โฉมใหม่: เมื่อออบซิเดียนผสานตำนานนักบิน สู่ความงามเหนือกาลเวลา

คาร์เทียร์เปิดตัว Santos-Dumont หน้าปัดออบซิเดียน หินภูเขาไฟธรรมชาติผสานดีไซน์นักบินระดับตำนาน สะท้อนงานฝีมือร่วมสมัยและความหรูหรา

By ทีมงาน devdog
iPhone Fold: เดิมพันครั้งใหญ่ของ Apple สู่ Top 3 ตลาดจอพับปี 2026

iPhone Fold: เดิมพันครั้งใหญ่ของ Apple สู่ Top 3 ตลาดจอพับปี 2026

คาดการณ์ iPhone Fold/Ultra อาจพา Apple ขึ้นแท่นผู้นำตลาดสมาร์ตโฟนจอพับภายในปี 2026 ด้วยส่วนแบ่ง 19.3% เจาะลึกดีไซน์ เทคโนโลยี และราคา Super Premium.

By ทีมงาน devdog