ไพทอนกับการอ่านเขียนไฟล์ เป็นเรื่องง่ายมากๆ โดยไพทอน เตรียมฟังก์ชั่นไว้สำหรับจัดการกับไฟล์ อยู่แล้วโดยเราไม่ต้อง import อะไรเพิ่มเข้ามา การอ่านเขียนไฟล์ ใน ไพทอน ก็จะคล้ายๆ กับภาษา C, PHP
ซึ่งจะมีฟังก์ชั่น open เป็นพระเองของเรา กล่าว คือไม่ว่าเราต้องการจะทำอะไร กับไฟล์ เราก็ต้อง เปิดไฟล์ ด้วย ฟังก์ชั่น open กันก่อน

รูปแบบฟังก์ชั่น open


file object = open(file_name [, access_mode][, buffering])

ฟังก์ชั่นจะคืนค่าออกมาเป็น object
file_name คือไฟล์ที่เราต้องการเปิด
access_mode คือรูปแบบในการเปิดไฟล์ดูรายละเอียดในตารางด้านล่าง
buffering กำหนดว่าเราจะใช้ buffer หรือไม่

mode รายละเอียด
r เปิดไฟล์เพื่ออ่านอย่างเดียว. pointer อยู่ที่จุดเริ่มต้นของไฟล์. **ถ้าเราไม่ก็หมด access_mode ไพทอนจะเปิดไฟล์ด้วย mode นี้.
rb เปิดไฟล์อ่านในรูปแบบ binary .
r+ เปิดไฟล์เพื่ออ่านและเขียน pointer อยู่ที่จุดเริ่มต้นของไฟล์
rb+ เปิดไฟล์เพื่ออ่านและเขียนด้วยรูปบบ binary pointer อยู่ที่จุดเริ่มต้นของไฟล์
w เปิดไฟล์เพื่อเขียนเท่านั้น ถ้ามีไฟล์อยู่แล้วจะเขียนทับไฟล์เก่า ถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้
wb เปิดไฟล์เพื่อเขียนในรูปแบบ binary เท่านั้น ถ้ามีไฟล์อยู่แล้วจะเขียนทับไฟล์เก่า ถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้
w+ เปิดไฟล์เพื่ออ่านและเขียน ถ้ามีไฟล์อยู่แล้วจะเขียนทับไฟล์เก่า ถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้
wb+ เปิดไฟล์เพื่ออ่านและเขียนแบบ binary ถ้ามีไฟล์อยู่แล้วจะเขียนทับไฟล์เก่า ถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้
a เปิดไฟล์ เพื่อต่อท้ายข้อมูล เหมาะสำหรับไฟล์ที่มีข้อมูลอยู่แล้วและต้องการเพิ่ม เนื้อหาลงไป ไม่มีการเขียนทับข้อความเดิม และถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้เอง
ab เปิดไฟล์ เพื่อต่อท้ายข้อมูลรูปแบบข้อมูลเป็น binary เหมาะสำหรับไฟล์ที่มีข้อมูลอยู่แล้วและต้องการเพิ่ม เนื้อหาลงไป ไม่มีการเขียนทับข้อความเดิม และถ้ายังไม่มีไฟล์ ไพทอนจะสร้างไฟล์ขึ้นมาให้เอง
a+ เปิดไฟล์เพื่ออ่านและเขียน ต่อท้ายไฟล์
ab+ เปิดไฟล์เพื่ออ่านและเขียน ต่อท้ายไฟล์ ในรูปแบบ binary

การเปิดไฟล์จะใช้คู่กับ ปิดไฟล์เสมอ
รูปแบบหลังจากเปิดไฟล์ขึ้นมาใช้งานแล้ว เราก็ปิดไฟล์ด้วย ฟังก์ชั่น close()
รูปแบบ
fileObject.close()ตัวอย่าง file.py


#!/usr/bin/env python
# -*- coding: utf-8 -*-
l  = 1
f = open('test_file.txt', 'w')
while True:
        print('%d ถ้าจะออกจากโปรแกรมพิมพ์ bye ' %l)
        title = input('%d ป้อนชื่อ :' %l)
        cost = input('%d ป้อนชือเล่น :' %l)
        if title=='bye' or cost=='bye' :
            break
        f.write('%.2d,  %s,  %s \n' %(l, title, cost))
        l = l+1
f.close()

จากตัวอย่างโปรแกรม coding utf8 เป็นการกำหนดว่าไฟล์นี้เราต้องการ coding เป็น utf8 ซึ่งจะใช้งานกับภาษาไทย และภาษาอื่นๆได้
เมื่อรันโปรแกรมจะมีหน้าจอให้เรากรอก ชื่อ และ ชื่อเล่น ขึ้นมาเรื่อยๆ และ โปรแกรมจะเขียนลงไปในไฟล์ ชื่อ test_file.txt ให้ สนกว่าเราจะกรอกชื่อ หรือ ชื่อเล่นเป็น bye
*** ถ้าต้องการดูข้อมูลในไฟล์ ก็สามารถเปิดไฟล์ test_file.txt ด้วยโปรแกรม text editor เช่น notepad ดูได้

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Thin Client คืออะไร
โดย Jom07 อ 16 ม.ค. 2018 2:38 pm บอร์ด Software testing
0
9
อ 16 ม.ค. 2018 2:38 pm โดย Jom07
วิธีนอน 8 ชั่วโมง ใน 4 ชั่วโมง
โดย Before Dong อ 16 ม.ค. 2018 10:21 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
26
อ 16 ม.ค. 2018 10:21 am โดย Before Dong
งานประจำวันที่ 16 มกราคม 2561
โดย Four อ 16 ม.ค. 2018 9:46 am บอร์ด MT22 - อิษยา งามสอาด
2
27
อ 16 ม.ค. 2018 3:39 pm โดย Four
งานประจำวันที่ 16 มกราคม 2561
โดย Jom07 อ 16 ม.ค. 2018 9:44 am บอร์ด MT23 - สุพรรษา พูลตา
2
25
อ 16 ม.ค. 2018 2:21 pm โดย Jom07
งานประจำวันที่ 16 มกราคม 2561
โดย Parichat อ 16 ม.ค. 2018 9:40 am บอร์ด MT21 - ปาริชาติ รัตโณภาส
1
16
อ 16 ม.ค. 2018 10:05 am โดย AePongsak
เบอร์โทร ศูนย์บริการ ASUS ศูนย์บริการลูกค้าสัมพันธ์ (Call Center) ถามอะไหล่ ค่าบริการงานซ่อมได้
โดย mindphp อ 16 ม.ค. 2018 6:53 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
11
อ 16 ม.ค. 2018 6:53 am โดย mindphp
ตามหา พัดลมโน๊ตบุ๊ค ASUS รุ่น Pro36S ของ dc brushless
โดย mindphp อ 16 ม.ค. 2018 6:29 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
6
อ 16 ม.ค. 2018 6:29 am โดย mindphp
จะโหลด Android Studio กับ javaJDK ได้ที่ไหนค่ะ
โดย Anonymous จ 15 ม.ค. 2018 8:29 pm บอร์ด Mobile Programming - Android, iOS, Window Phone
1
20
จ 15 ม.ค. 2018 9:25 pm โดย thatsawan
การใช้งานคำสั่ง inner join ใน SQL(เอสคิวเเอล)
โดย Parichat จ 15 ม.ค. 2018 5:50 pm บอร์ด SQL Knowledge
0
17
จ 15 ม.ค. 2018 5:50 pm โดย Parichat
ประเภทของ Firewall (ไฟร์วอลล์)
โดย Jom07 จ 15 ม.ค. 2018 5:42 pm บอร์ด Software testing
0
16
จ 15 ม.ค. 2018 5:42 pm โดย Jom07
เทคนิคการโอนย้ายข้อมูล 2 คอมพิวเตอร์
โดย Jom07 จ 15 ม.ค. 2018 5:41 pm บอร์ด Software testing
0
16
จ 15 ม.ค. 2018 5:41 pm โดย Jom07
Android Studio ไม่อนุญาตให้กรอกข้อมูลใน EditText
โดย Four จ 15 ม.ค. 2018 4:53 pm บอร์ด Mobile Application Developing- Android, iOS
0
11
จ 15 ม.ค. 2018 4:53 pm โดย Four
Android Studio การกำหนดขนาดข้อความใน TextView
โดย Four จ 15 ม.ค. 2018 2:50 pm บอร์ด Mobile Application Developing- Android, iOS
0
11
จ 15 ม.ค. 2018 2:50 pm โดย Four
สวิตซ์ (Switch) คืออะไร
โดย Jom07 จ 15 ม.ค. 2018 1:35 pm บอร์ด IOT - Internet of things
0
16
จ 15 ม.ค. 2018 1:35 pm โดย Jom07
การใช้งาน Tabs(แท็บ) ใน Bootstrap 4(บูตสแตบ 4)
โดย Parichat จ 15 ม.ค. 2018 12:37 pm บอร์ด Booststap Knowledge
0
9
จ 15 ม.ค. 2018 12:37 pm โดย Parichat
ฮับ (HUB) คืออะไร
โดย Jom07 จ 15 ม.ค. 2018 12:33 pm บอร์ด IOT - Internet of things
0
20
จ 15 ม.ค. 2018 12:33 pm โดย Jom07
การใช้งาน Carousel(แครี่เซ้า) ใน Bootstrap 4(บูตสแตบ 4)
โดย Parichat จ 15 ม.ค. 2018 12:10 pm บอร์ด Booststap Knowledge
0
13
จ 15 ม.ค. 2018 12:10 pm โดย Parichat
Android Studio การนับจำนวนตัวอักษรใน TextView
โดย Four จ 15 ม.ค. 2018 11:50 am บอร์ด Mobile Application Developing- Android, iOS
0
12
จ 15 ม.ค. 2018 11:50 am โดย Four
การใช้งาน Popover(ป็อบโอเวอร์) ใน Bootstrap 4(บูตสแตบ 4)
โดย Parichat จ 15 ม.ค. 2018 11:43 am บอร์ด Booststap Knowledge
0
9
จ 15 ม.ค. 2018 11:43 am โดย Parichat
GAMEMAKER: STUDIO
โดย Jom07 จ 15 ม.ค. 2018 11:34 am บอร์ด Software testing
0
12
จ 15 ม.ค. 2018 11:34 am โดย Jom07