[Python] EP 7: Work with files

Master
Artisan Brain Academy
2 min readSep 22, 2019

สวัสดีครับ สำหรับวันนี้เราจะมาทำความรู้จักกับวิธีการอ่านเขียนไฟล์ ด้วยชุดคำสั่งพื้นฐานของ python กันนะครับ

การอ่านเขียนไฟล์ เป็นแนวทางแก้ปัญหาในเรื่องของการเก็บข้อมูล ดังตัวอย่างต่อไปนี้

สร้างไฟล์ชื่อ 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 !!!

--

--