Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ไฟล์วัตถุใน Python?


ใน 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

หากต้องการอ่านไฟล์ข้อความใน 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!']