สวัสดีครับ พบกับ [Python for Beginner] EP.7 : Work with files จากตอนที่แล้วเราพูดถึงตัว Collections : Dictionary กันไป สำหรับวันนี้เราจะมาทำความรู้จักกับวิธีการอ่านเขียนไฟล์ ด้วยชุดคำสั่งพื้นฐานของ python กันนะครับ
python work with files
การอ่านเขียนไฟล์ เป็นแนวทางแก้ปัญหาในเรื่องของการเก็บข้อมูล ดังตัวอย่างต่อไปนี้
สร้างไฟล์ชื่อ data.txt โดยให้ในไฟล์มีข้อมูลดังนี้
3
50 3
20 2
100 1
โจทย์คือ ต้องการให้อ่านข้อมูลขึ้นมา ข้อมูลในบรรทัดแรกสุด คือ n จำนวนข้อมูลทั้งหมดที่มี ในที่นี้คือ 3 จากนั้นแต่ละบรรทัดจะประกอบไปด้วยเลข 2 ชุดคือ เลขจำนวนเต็ม และ เลขที่ต้องการให้ยกกำลัง ผลลัพธ์ที่ต้องการคือ
3
50 x 50 x 50 = 125000
20 x 20 = 400
100 = 100
เราสามารถใช้คำสั่งอ่านไฟล์ได้ดังนี้
with open(‘data.txt’, ‘r’) as f:
data = f.read()
print(data)
โดยที่ function open จะรับ input 2 ตัวคือ 1) ชื่อไฟล์พร้อมที่อยู่ของไฟล์ และ 2) การเปิดไฟล์ต้องการให้เปิดขึ้นมาเพื่ออะไรโดยจะสามารถระบุได้ดังนี้
– r คือ เปิดไฟล์ขึ้นมาเพื่ออ่านอย่างเดียว
– w คือ เปิดไฟล์ขึ้นมาเพื่อเขียนทับข้อมูลเดิม
– a คือ เปิดไฟล์ขึ้นมาเพื่อเขียนข้อมูลเพิ่มไปยังไฟล์เดิม
– + ใช้คู่กับ r, w, a เช่น ‘r+’, ‘w+’ และ ‘a+’ คือหากไฟล์ที่ต้องการอ่านนั้นไม่มีอยู่ จะสามารถไฟล์นั้นขึ้นมาให้เลยทันที
หรือสามารถเขียนอีกแบบได้ดังนี้
with open(‘data.txt’, ‘r’) as f:
for line in f:
print(line)
โดยถ้าเปิดไฟล์ขึ้นมาอ่านได้
– ตัวแปรที่ชื่อ f คือข้อมูลที่อ่านได้ทั้งหมด
– ลูป [for line in f:] คือ การนำข้อมูลจากในไฟล์ อ่านขึ้นมาทีละ 1 บรรทัดเก็บไว้ใน ตัวแปร line
จากนั้นเรามาลองแก้โจทย์โดยเขียนดังนี้
with open(‘data.txt’, ‘r’) as f:
cnt = 1
for line in f:
if cnt > 1:
number,exp = line.split()
string = str(‘ x ‘.join([number] * int(exp)))
power = pow(int(number), int(exp))
print(‘{} = {}’.format(string, power))
else:
n = line.split()
print(n[0])
cnt+=1
ผลลัพธ์ที่ได้
3
50 x 50 x 50 = 125000
20 x 20 = 400
100 = 100
ฟังก์ชั่นที่เกี่ยวข้องกับโจทย์นี้มีดังนี้
- split() คือ ฟังก์ชั่นแบ่งข้อมูล โดยจะแบ่งข้อมูลจากสัญลักษณ์ เคาะวรรค
- int() คือ ฟังก์ชั่นเปลี่ยนข้อมูลให้เป็น integer
- str() คือ ฟังก์ชั่นเปลี่ยนข้อมูลให้เป็น string
- join() คือ ฟังก์ชั่นเปลี่ยนข้อมูลจาก tuple ให้เป็น string
- pow(ตัวเลข, เลขยกกำลัง) คือ ฟังก์ชั่นคำนวณผลลัพธ์ของเลขยกกำลัง
- print(“{} {}”.format(ตัวแปรที่1, ตัวแปรที่2) คือ วิธีการนำค่าที่อยู่ในตัวแปร1 และ 2 มาแสดงให้ตรงกับสัญลักษณ์ “{}”
เป็นยังไงกันบ้างครับ หวังว่าคงพอทำให้เห็นภาพวิธีการใช้ python ในการอ่านเขียนไฟล์กันนะครับ ซึ่งก็จะมี usecase เช่นเก็บข้อมูล logs บน text ไฟล์ หรืออ่านข้อมูลต่างๆมาเก็บไว้ที่ csv file เป็นต้น
หากมีข้อสงสัยสอบถามเพิ่มเติมได้ตลอดเลยนะครับ หรือถ้าชอบ ฝากแชร์และติดตามเพื่อกำลังใจให้ด้วยนะครับ แล้วพบกันใหม่ในครั้งหน้า ขอบคุณครับ
Happy Coding !!!