14 กรกฎาคม 2557

Published กรกฎาคม 14, 2557 by with 0 comment

เขียนและอ่านข้อมูลจากเท็กซ์ไฟล์บน Python 3

สวัสดีครับทุกท่าน บทความนี้จะพาผู้อ่านไปเขียนข้อมูลและอ่านข้อมูลจากเท็กซ์ไฟล์บน Python 3 กันครับ โปรแกรมที่มีการทำงานบางอย่างต้องมีการบันทึกข้อมูลเพื่อเรียกใช้งานข้อมูลนั้นอีกในอนาคต ไม่ต้องมาประมวลผลใหม่หรือกรอกข้อมูลเข้าไปใหม่

เท็กซ์ไฟล์ (Text Files) เป็นอีกหนึ่งรูปแบบในการบันทึกข้อมูลครับ

มาเริ่มต้นที่การเปิดไฟล์กัน

รูปแบบการเปิดไฟล์
ตัวแปร = open(ชื่อไฟล์, โหมดการเปิดไฟล์)

โหมดการเปิดไฟล์ที่ใช้กับเท็กซ์ไฟล์

r คือ อ่านเพียงอย่างเดียว
w คือ เขียนเพียงอย่างเดียว ถ้ายังไม่มีไฟล์ จะสร้างไฟล์ใหม่
w+ คือ เขียน สร้างไฟล์ใหม่ หรือแทนที่ข้อมูลเดิม
a คือ เปิดไฟล์แล้วเขียนข้อมูลต่อท้ายข้อมูลเดิม
r+ คือ  เปิดไฟล์เพื่ออ่านหรือเขียนข้อมูลทับไฟล์
ตัวอย่าง
a = open('work1.txt', 'w')

เขียนข้อมูลลงเท็กซ์ไฟล์

สำหรับโหมดเขียนข้อมูลลงไฟล์นี้ ห้ามใช้ r ครับเพราะโหมดนี้ไม่สามารถเขียนข้อมูลลงไฟล์ได้ครับ
มีรูปแบบดังนี้ครับ
ตัวแปรที่เปิดไฟล์.write(ข้อความหรือตัวแปร)
ตัวอย่าง
a = open('work1.txt', 'w')
a.write('This is a testn')
ผลลัพธ์

เขียนข้อมูลรายการ (List) ลงเท็กซ์ไฟล์ทีละบรรทัด

มีรูปแบบดังนี้
ตัวแปรที่เปิดไฟล์.writelines(List ข้อมูล)

อ่านข้อมูลจากเท็กซ์ไฟล์

มีรูปแบบดังนี้
ตัวแปรที่เปิดไฟล์.read()
ตัวอย่าง
a = open('work1.txt', 'r')
a.read()
ผลลัพธ์

หรือจะใช้ with
with open('work1.txt', 'r') as f:
     read_data = f.read()
print(read_data)
ผลลัพธ์

อ่านข้อมูลจากเท็กซ์ไฟล์ทีละบรรทัด

ในการอ่านข้อมูลทีละบรรทัดนี้ Python ได้แบ่งบรรทัดโดยอ้างอิง \n ครับ เวลาเขียนข้อมูลลงไฟล์ หากต้องการขึ้นบรรทัดใหม่ให้ใส่ \n ตามหลังเข้าไปด้วยนะครับ
มีรูปแบบดังนี้
ตัวแปรที่เปิดไฟล์.readline()
ตัวอย่าง
a = open('work2.txt', 'r')
a.readline()

ปิดไฟล์หลังเรียกใช้งาน

เมื่อเรียกใช้งานไฟล์เสร็จ ควรที่จะปิดไฟล์เพื่อคืนทรัพยากรให้กับระบบครับ
มีรูปแบบการใช้งานดังนี้ครับ
ตัวแปรที่เปิดไฟล์.close
ตัวอย่าง
a.close
ผลลัพธ์

ฟังก์ชันเพิ่มเติม

  • ตัวแปรที่เปิดไฟล์.name - จะคืนค่าชื่อไฟล์ที่เปิดอยู่
  • ตัวแปรที่เปิดไฟล์.mode - จะคืนค่าโหมดการเปิดไฟล์ เช่น w , r เป็นต้น

แบบฝีกหัด

  1. จงเขียนโปรแกรมอ่านข้อความจากเท็กซ์ไฟล์
  2. จงเขียนโปรแกรมเก็บข้อความจากที่ผู้ใช้กรอกลงไปในเท็กซ์ไฟล์
  3. ให้ข้อมูลในไฟล์ b.txt มีเลข 5 อยู่ ให้ดึงค่าตัวเลขมาลบด้วย 4 แล้วแสดงผลลัพธ์ที่ได้ใน Python
  4. จงเขียนโปรแกรมให้สร้างไฟล์ a.txt แล้วเขียนเลข 2 ลงไปในไฟล์ แล้วให้ดึงค่าจากในไฟล์มาลบ 1 แล้วนำผลลัพธ์ที่ได้ไปเก็บแทนที่เลข 2 ใน a.txt
เฉวยข้อ 3 - 4 ท้ายบทความ

การนำไปประยุกต์ใช้

ตัวอย่าง โปรแกรมเขียนบันทึกและอ่านอย่างง่ายโดยใช้เท็กซ์ไฟล์
หลักการ รับค่าว่าจะทำงานไหน ถ้าเลือก 1 เขียนข้อมูลงเท็กซ์ไฟล์แล้วแสดงข้อความที่บันทึก จบการทำงาน ถ้าเลือก 2 อ่านข้อมูลจากเท็กซ์ไฟล์ จบการทำงาน
#!/usr/bin/python
#-*-coding: utf-8 -*-
print ("The program notesbook")
print ("Build by Wannaphong")
print ("What you do?")
print ("1.To write n 2.Read")
x = int(input("input: ")) #จะใช้ if else ในการเช็ค
if x == 1:
    a = open('notes.txt','a+') #ใช้โหมดเปิดไฟล์ a+ เขียนต่อท้ายข้อมูลเดิม ถ้าไม่มีไฟล์ให้สร้างไฟล์ใหม่
    ab = input("input: ") #รับข้อมูล
    a.write(ab)#เขียนข้อมูลลงไฟล์
    print ("Ok, Text's:",ab) #แสดงข้อมูลที่บันทึก
    a.close #ปิดไฟล์
elif x == 2:
    a = open('notes.txt','r+')#ใช้โหมดเปิดไฟล์ r+ อ่านข้อมูลในไฟล์ ถ้าไม่มีไฟล์ให้สร้างไฟล์ใหม่
    print (a.read())#แสดงข้อมูลในไฟล์
    a.close #ปิดไฟล์
ผลลัพธ์
ขอบคุณครับ

เฉลยแบบฝึกหัด ข้อ 3, 4
ข้อ 3
f = open('b.txt','r') #เปิดไฟล์ b.txt
to = f.read() #อ่านไฟล์ b.txt
a = int(to) #เนื่องจากค่าที่อ่านได้จะเป็น str ต้องแปลงเป็น int ก่อน
s = a-4
print(s)
f.close #ปิดไฟล์
ข้อ 4
import sys
f = open('a.txt','w+') #เปิดไฟล์ a.txt ถ้ายังไม่มีไฟล์ ให้สร้างไฟล์ใหม่
f.write('2') #เก็บค่า str '2' ลงไป
f.close() #ปิดไฟล์
f = open('a.txt','r') #เปิดไฟล์ a.txt ให้สิทธิ์แค่อ่านไฟล์
to = f.read() #อ่านไฟล์ a.txt
a = int(to) #เนื่องจากค่าที่อ่านได้จะเป็น str ต้องแปลงเป็น int ก่อน
s = a-1
s = str(s) #แปลงให้เป็น str ก่อนเก็บเข้าไฟล์
f.close() #ปิดไฟล์
f = open('a.txt','w+') #เปิดไฟล์ a.txt ถ้ายังไม่มีไฟล์ ให้สร้างไฟล์ใหม่ หรือแทนที่ข้อมูลเดิม
f.write(s)
f.close() #ปิดไฟล์


0 ความคิดเห็น:

แสดงความคิดเห็น

แสดงความคิดเห็นได้ครับ :)