ให้เรตสมาชิก: 0 / 5

ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

ไพทอนกับการอ่านเขียนไฟล์ เป็นเรื่องง่ายมากๆ โดยไพทอน เตรียมฟังก์ชั่นไว้สำหรับจัดการกับไฟล์ อยู่แล้วโดยเราไม่ต้อง 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 ดูได้

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
B - com_MJUpgrade ไม่สามารถติดตั้งได้ใน Joomla เวอร์ชัน 3.x
โดย Parichat ส 23 มิ.ย. 2018 5:27 pm บอร์ด M061 - ปาริชาติ รัตโณภาส
0
1
ส 23 มิ.ย. 2018 5:27 pm โดย Parichat
B - ไม่สามารถ Copy สินค้าได้ [2018-05][030]
โดย Rujikon ส 23 มิ.ย. 2018 4:52 pm บอร์ด Hachanna - Testter
0
2
ส 23 มิ.ย. 2018 4:52 pm โดย Rujikon
การดูคำสั่ง sql ใน joomla
โดย Parichat ส 23 มิ.ย. 2018 3:31 pm บอร์ด Joomla Developing Knowledge
0
6
ส 23 มิ.ย. 2018 3:31 pm โดย Parichat
ปัญหา key ข้อมูลแล้ว error
โดย wilawan ส 23 มิ.ย. 2018 1:35 pm บอร์ด M062 - วิลาวัณย์ นักษัตรมณฑล
1
7
ส 23 มิ.ย. 2018 1:58 pm โดย mindphp
Alloy - Product ที่ยังไม่มีในระบบ
โดย wilawan ส 23 มิ.ย. 2018 12:18 pm บอร์ด M062 - วิลาวัณย์ นักษัตรมณฑล
0
4
ส 23 มิ.ย. 2018 12:18 pm โดย wilawan
ตรวจสอบ BPMN Zenith Workflow
โดย wilawan ส 23 มิ.ย. 2018 11:52 am บอร์ด Mindphp Task (ทดลองงาน)
0
2
ส 23 มิ.ย. 2018 11:52 am โดย wilawan
Google sheet ถ้าอยู่ที่ไฟล์ แล้วจะย้อนกลับมาหน้าแสดงรายละเอียดใน folder อย่างไร
โดย blackskulla ส 23 มิ.ย. 2018 11:10 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
16
ส 23 มิ.ย. 2018 11:14 am โดย thatsawan
ฺB - ไม่สามารถคืนสินค้าเข้าคลังของเสียหายได้ [2018-06][011]
โดย Rujikon ส 23 มิ.ย. 2018 11:10 am บอร์ด Hachanna - Testter
0
1
ส 23 มิ.ย. 2018 11:10 am โดย Rujikon
Q - ถ้ามีการให้ลูกค้ายืมสินค้าจะต้องดำเนินการอย่างไร [2018-06][012]
โดย Rujikon ส 23 มิ.ย. 2018 10:53 am บอร์ด Hachanna - Testter
0
4
ส 23 มิ.ย. 2018 10:53 am โดย Rujikon
B - เข้าดูข้อมูลการนัดคนเข้ามาสัมภาษณ์งานใน Application ไม่ได้
โดย watcharin ส 23 มิ.ย. 2018 10:25 am บอร์ด M.D.Soft Co.,Ltd. - Tester
1
1
ส 23 มิ.ย. 2018 10:29 am โดย watcharin
งานประจำวันที่ 23 มิถุนายน 2561
โดย Rujikon ส 23 มิ.ย. 2018 9:52 am บอร์ด M060 - นายรุจิกร พงษ์พิละ
1
10
ส 23 มิ.ย. 2018 12:24 pm โดย Rujikon
งานประจำวันที่ 23 มิถุนายน 2561
โดย wilawan ส 23 มิ.ย. 2018 9:46 am บอร์ด M062 - วิลาวัณย์ นักษัตรมณฑล
0
5
ส 23 มิ.ย. 2018 9:46 am โดย wilawan
งานประจำวันที่ 23 มิถุนายน 2561
โดย Parichat ส 23 มิ.ย. 2018 9:34 am บอร์ด M061 - ปาริชาติ รัตโณภาส
0
2
ส 23 มิ.ย. 2018 9:34 am โดย Parichat
B - com_M2OpenERP Migration ติดตั้งได้แต่ไม่สามารถตั้งค่าได้ใน Joomla 3.x
โดย Parichat ศ 22 มิ.ย. 2018 5:55 pm บอร์ด M2OpenERP
0
3
ศ 22 มิ.ย. 2018 5:55 pm โดย Parichat
Q - หน้ารายละเอียดสินค้าให้แสดงราคาเป็น USD ด้วยและTHB ด้วย
โดย Parichat ศ 22 มิ.ย. 2018 2:20 pm บอร์ด Joomla Dev
5
13
ศ 22 มิ.ย. 2018 6:04 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า แสดงพิ้นหลังยาวกว่าเว็บต้นฉบับ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:20 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
2
12
ศ 22 มิ.ย. 2018 6:12 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า ต้องแสดงราคาเป็น USD ด้วย ตามเว็บต้นฉบับ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:17 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
9
ศ 22 มิ.ย. 2018 6:02 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า เมื่อเลือกสีสินค้า รูปแบบของราคาจากตัวหนาเปลี่ยนเป็นตัวปกติ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:09 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
5
ศ 22 มิ.ย. 2018 1:46 pm โดย Parichat
B - หน้า How to Buy ข้อความเกินขอบพื้นหลัง
โดย tsukasaz ศ 22 มิ.ย. 2018 12:07 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
4
ศ 22 มิ.ย. 2018 1:28 pm โดย Parichat
B - หน้าดาวน์โหลดแสดงผลไม่เหมือนของเดิม ข้อความเกินขอบพื้นหลัง
โดย tsukasaz ศ 22 มิ.ย. 2018 12:04 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
4
ศ 22 มิ.ย. 2018 12:10 pm โดย Parichat