ใน python เมื่อใดก็ตามที่เราพยายามอ่านหรือเขียนไฟล์ เราไม่จำเป็นต้องนำเข้าไลบรารีใดๆ เนื่องจากมันถูกจัดการโดยกำเนิด
สิ่งแรกที่เราจะทำคือใช้ฟังก์ชันเปิดในตัวเพื่อรับไฟล์ออบเจกต์
ฟังก์ชันเปิดเปิดไฟล์และส่งกลับวัตถุไฟล์ ออบเจ็กต์ไฟล์มีเมธอดและแอตทริบิวต์ที่สามารถใช้เรียกข้อมูลหรือจัดการไฟล์ที่คุณเปิดได้
ไฟล์คืออะไร
ก่อนที่เราจะดำเนินการใด ๆ กับไฟล์ เรามาทำความเข้าใจก่อนว่าไฟล์คืออะไร? ไฟล์คือตำแหน่งที่มีชื่อบนดิสก์เพื่อเก็บข้อมูลที่เกี่ยวข้อง เนื่องจากไฟล์นั้นมีชื่อและตำแหน่งอยู่ จึงถูกจัดเก็บไว้ในฮาร์ดดิสก์
ใน python ไฟล์จะดำเนินการตามลำดับต่อไปนี้:
- การเปิดไฟล์
- อ่านหรือเขียนการดำเนินการ
- การปิดไฟล์
การเปิดไฟล์- ฟังก์ชั่น Open()
ในการเปิดไฟล์เพื่อวัตถุประสงค์ในการอ่านหรือเขียน เราต้องใช้ฟังก์ชัน open() ในตัว
ฟังก์ชัน open() ใช้สองอาร์กิวเมนต์ อย่างแรกคือชื่อไฟล์ และอย่างที่สองคือเพื่อจุดประสงค์ที่เราต้องการเปิด สำหรับการอ่านหรือเขียน?
ไวยากรณ์ในการเปิดวัตถุไฟล์ในหลามคือ:
File_obj = open(“filename”, “mode”)
ที่ไหน
-
File_obj เรียกอีกอย่างว่า handle เป็นตัวแปรในการเพิ่มไฟล์วัตถุ
-
filename:ชื่อไฟล์
-
โหมด:เพื่อบอกล่ามว่าจะใช้งานไฟล์อย่างไร
>>> f = open("pytube1.py") # open file in current directory >>> f = open(r"c:\users\rajesh\Documents\readme.txt") # Open file from the given path
อาร์กิวเมนต์โหมด
ดังที่เราเห็นได้จากด้านบน การให้อาร์กิวเมนต์ที่สองกับฟังก์ชัน open() เป็นทางเลือก ซึ่งเป็นโหมด เราสามารถระบุโหมดขณะเปิดไฟล์ .i.e. ไม่ว่าเราต้องการอ่าน 'r' เขียน 'w' หรือผนวก 'a' ลงในไฟล์ เรายังระบุได้ด้วยว่าต้องการเปิดไฟล์ในโหมดข้อความหรือโหมดไบนารี
โหมดเริ่มต้นคือโหมดข้อความที่เราได้รับสตริงเมื่ออ่านจากไฟล์
ด้านล่างนี้คือโหมดต่างๆ ที่รองรับในฟังก์ชัน open():
โหมดไฟล์ Python
โหมด | คำอธิบาย |
---|---|
‘r’ | เปิดไฟล์เพื่ออ่าน (ค่าเริ่มต้น) |
‘w’ | เปิดไฟล์เพื่อเขียน สร้างไฟล์ใหม่หากไม่มีอยู่หรือตัดทอนไฟล์หากมีอยู่ |
‘x’ | เปิดไฟล์เพื่อสร้างเอกสิทธิ์ หากไฟล์มีอยู่แล้ว การดำเนินการจะล้มเหลว |
'a' | เปิดเพื่อต่อท้ายไฟล์โดยไม่ตัดทอน สร้างไฟล์ใหม่หากไม่มีอยู่ |
‘t’ | เปิดในโหมดข้อความ (ค่าเริ่มต้น) |
‘b’ | เปิดในโหมดไบนารี |
‘+’ | เปิดไฟล์สำหรับอัปเดต (อ่านและเขียน) |
>>> f = open("pytube1.py") #equivalent to 'r' or 'rt' >>> f = open("pytube1.py", "w")# write in text mode >>> f = open("color3.jpg", "r+b")# read and write in binary mode
การเข้ารหัสเริ่มต้นขึ้นอยู่กับแพลตฟอร์ม ใน windows มันคือ 'cp1252' แต่ 'utf-g' ใน linux
ขอแนะนำให้ระบุประเภทการเข้ารหัส:
>>> f = open("pytube1.py", mode = "r", encoding = 'utf-8')
สร้างไฟล์ข้อความ
มาสร้างไฟล์ข้อความอย่างง่ายใน python โดยใช้โปรแกรมแก้ไขข้อความหรือตัวเลือกของคุณกัน แม้ว่าฉันจะใช้ python shell อยู่ก็ตาม ☺
>>> # Create a text file named "textfile.txt" in your current working directory >>> f = open("textfile.txt", "w") >>> #above will create a file named textfile.txt in your default directory >>> f.write("Hello, Python") 13 >>> f.write("\nThis is our first line") 23 >>> f.write("\nThis is our second line") 24 >>> f.write("\nWhy writing more?, Because we can :)") 37 >>> f.close()
เราสามารถเห็นไฟล์ใหม่ถูกสร้างขึ้น ชื่อ textfile.txt ในไดเร็กทอรีการทำงานปัจจุบันของเรา และเมื่อเปิดไฟล์ที่สร้างขึ้นใหม่ เราจะเห็นสิ่งต่อไปนี้:
การอ่านไฟล์ข้อความใน Python
หากต้องการอ่านไฟล์ข้อความใน python เราสามารถทำได้หลายวิธี
ในกรณีที่คุณต้องการแยกสตริงที่มีอักขระทั้งหมดในไฟล์ เราสามารถใช้วิธีดังต่อไปนี้:
file.read()
ด้านล่างนี้คือโปรแกรมที่จะใช้ไวยากรณ์ด้านบน:
>>> f = open("textfile.txt", "r") >>> f.read() 'Hello, Python\nThis is our first line\nThis is our second line\nWhy writing more?, Because we can :)'
ในกรณีที่คุณต้องการอ่านจำนวนอักขระบางตัวจากไฟล์ เราสามารถทำได้ง่ายมาก
>>> f = open("textfile.txt", "r") >>> print(f.read(13)) Hello, Python
อย่างไรก็ตาม หากคุณต้องการอ่านไฟล์ทีละบรรทัด คุณสามารถใช้ฟังก์ชัน readline()
>>> f = open("textfile.txt", "r") >>> print(f.read(13)) Hello, Python >>> print(f.readline()) >>> f = open("textfile.txt", "r") >>> print(f.readline()) Hello, Python >>> print(f.readline()) This is our first line >>> print(f.readline()) This is our second line >>> print(f.readline()) Why writing more?, Because we can :)
หรือคุณต้องการส่งคืนทุกบรรทัดในไฟล์ แยกกันอย่างเหมาะสม เราสามารถใช้ฟังก์ชัน readlines()
>>> f = open("textfile.txt", "r") >>> print(f.readlines()) ['Hello, Python\n', 'This is our first line\n', 'This is our second line\n', 'Why writing more?, Because we can :)']
ด้านบนแต่ละบรรทัดคั่นด้วยจุลภาค
วนรอบวัตถุไฟล์
ในกรณีที่คุณต้องการอ่านหรือส่งคืนบรรทัดทั้งหมดจากไฟล์ในลักษณะที่มีโครงสร้างและมีประสิทธิภาพมากที่สุด เราสามารถใช้วิธีวนรอบได้
>>> f = open("textfile.txt", "r") >>> for line in f: print(line) Hello, Python This is our first line This is our second line Why writing more?, Because we can :)
การเขียนลงไฟล์
การเขียนลงไฟล์เป็นเรื่องง่าย คุณเพียงแค่เปิดไฟล์และส่งต่อข้อความที่คุณต้องการเขียนไปยังไฟล์
วิธีนี้เราสามารถใช้เพื่อผนวกข้อมูลเข้ากับไฟล์ที่มีอยู่ ใช้อักขระ EOL เพื่อขึ้นบรรทัดใหม่หลังจากที่คุณเขียนข้อมูลลงในไฟล์
>>> f = open("textfile.txt", "w") >>> f.write("There are tons to reason to 'fall in love with PYTHON'") 54 >>> f.write("\nSee, i have added one more line :).") 36 >>> f.close() >>> f = open("textfile.txt", "r") >>> for line in f: print(line) There are tons to reason to 'fall in love with PYTHON' See, i have added one more line :).
การปิดไฟล์
เมื่อคุณทำงานกับไฟล์เสร็จแล้ว คุณต้องใช้คำสั่ง f.close() เพื่อสิ้นสุดการทำงาน ด้วยเหตุนี้ เราจึงปิดไฟล์โดยสมบูรณ์ ยกเลิกทรัพยากรทั้งหมดที่ใช้อยู่ และทำให้ระบบใช้ที่อื่นได้
>>> f = open("textfile.txt", "r") >>> f.close() >>> f.readlines() Traceback (most recent call last): File "<pyshell#95>", line 1, in <module> f.readlines() ValueError: I/O operation on closed file.
เมื่อไฟล์ถูกปิด ความพยายามใดๆ ในการใช้วัตถุไฟล์จะเกิดข้อผิดพลาด
พร้อมคำชี้แจง
คำสั่ง with สามารถใช้กับอ็อบเจ็กต์ไฟล์ได้ การใช้ทั้งสอง (พร้อมอ็อบเจ็กต์คำสั่ง &ไฟล์) เราได้รับ การจัดการไวยากรณ์และข้อยกเว้นที่ชัดเจนยิ่งขึ้นในโปรแกรมของเรา
ข้อดีอีกประการหนึ่งคือไฟล์ใดๆ ที่เปิดอยู่จะถูกปิดโดยอัตโนมัติเมื่อเราดำเนินการกับไฟล์เสร็จแล้ว
ไวยากรณ์
with open(“filename”) as file:
ตัวอย่าง:
>>> with open("textfile.txt") as f: for line in f: print(line)
ผลลัพธ์
There are tons to reason to 'fall in love with PYTHON' See, i have added one more line :).
การเขียนไปยังไฟล์โดยใช้คำสั่งนั้นก็ง่ายเช่นกัน (อย่างที่คุณเดาได้แล้ว)
>>> with open("textfile.txt", "a") as f: f.write("\nHello, Python-Here i come once again!") 38 >>> with open("textfile.txt") as f: for line in f: print(line) There are tons to reason to 'fall in love with PYTHON' See, i have added one more line :). Hello, Python-Here i come once again!
การแยกบรรทัดในไฟล์ข้อความ
เราสามารถแยกบรรทัดที่นำมาจากไฟล์ข้อความโดยใช้ฟังก์ชัน python split() เราสามารถแบ่งข้อความโดยใช้อักขระใดก็ได้ตามต้องการ ไม่ว่าจะเป็นอักขระเว้นวรรค ทวิภาค หรืออย่างอื่น
>>> with open("textfile.txt", "r") as f: data = f.readlines() for line in data: words = line.split() print(words)
ผลลัพธ์
['There', 'are', 'tons', 'to', 'reason', 'to', "'fall", 'in', 'love', 'with', "PYTHON'"] ['See,', 'i', 'have', 'added', 'one', 'more', 'line', ':).'] ['Hello,', 'Python-Here', 'i', 'come', 'once', 'again!'] And we are going to split the text using a colon instead of a space(like above), we just need to change line.split() to line.split(“:”) and our output will be something like: ["There are tons to reason to 'fall in love with PYTHON'\n"] ['See, i have added one more line ', ').\n'] ['Hello, Python-Here i come once again!']