Một tệp là một số thông tin hoặc dữ liệu ở trong các thiết bị lưu trữ máy tính. Bạn đã biết về các loại tệp khác nhau, như tệp nhạc, tệp video, tệp văn bản của bạn. Python cung cấp cho bạn những cách dễ dàng để thao túng các tệp này. Nói chung, chúng tôi chia các tệp trong hai danh mục, tệp văn bản và tệp nhị phân. Tệp văn bản là văn bản đơn giản trong đó các tệp nhị phân chứa dữ liệu nhị phân chỉ có thể đọc được bằng máy tính.
Mở tập tin
Để mở một tệp, chúng tôi sử dụng hàm Open []. Nó yêu cầu hai đối số, đầu tiên là đường dẫn tệp hoặc tên tệp, thứ hai chế độ nào nó sẽ mở. Các chế độ giống như
- "R Rv -> chỉ mở đọc, bạn có thể đọc tệp nhưng không thể chỉnh sửa / xóa bất cứ thứ gì bên trong
- Mùi W W.
- "A" -> mở ở chế độ phụ lục
Chế độ mặc định chỉ được đọc, tức là nếu bạn không cung cấp bất kỳ chế độ nào, nó sẽ chỉ mở tệp như chỉ đọc. Hãy để chúng tôi mở một tệp
>>> fobj = open["love.txt"] >>> fobj
Đóng một tập tin
Sau khi mở một tệp, người ta phải luôn đóng tệp đã mở. Chúng tôi sử dụng phương thức đóng [] cho điều này.
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]
Quan trọng
Luôn đảm bảo rằng bạn đóng rõ ràng từng tệp mở, một khi công việc của nó được hoàn thành và bạn không có lý do gì để giữ cho nó mở. Tại vì
- Có giới hạn trên đối với số lượng tệp mà một chương trình có thể mở. Nếu bạn vượt quá giới hạn đó, không có cách phục hồi đáng tin cậy nào, vì vậy chương trình có thể gặp sự cố.
- Mỗi tệp mở tiêu thụ một số bộ nhớ chính cho các cấu trúc dữ liệu được liên kết với nó, như bộ mô tả tệp/xử lý hoặc khóa tệp, vì vậy về cơ bản bạn có thể lãng phí nhiều bộ nhớ nếu bạn có nhiều tệp hơn không hữu ích .
- Mở các tập tin luôn có cơ hội tham nhũng và mất dữ liệu.
Đọc một tập tin
Để đọc toàn bộ tệp cùng một lúc, sử dụng phương thức read [].
>>> fobj = open["sample.txt"] >>> fobj.read[] 'I love Python\nPradeepto loves KDE\nSankarshan loves Openoffice\n'
Nếu bạn gọi Read [] một lần nữa, nó sẽ trả về chuỗi trống vì nó đã đọc toàn bộ tệp. Readline [] có thể giúp bạn đọc một dòng mỗi lần từ tệp.
>>> fobj = open["sample.txt"] >>> fobj.readline[] 'I love Python\n' >>> fobj.readline[] 'Pradeepto loves KDE\n'
Để đọc tất cả các dòng trong một danh sách, chúng tôi sử dụng phương thức readlines [].
>>> fobj = open["sample.txt"] >>> fobj.readlines[] ['I love Python\n', 'Pradeepto loves KDE\n', 'Sankarshan loves Openoffice\n']
Bạn thậm chí có thể lặp qua các dòng trong một đối tượng tệp.
>>> fobj = open["sample.txt"] >>> for x in fobj: ... print[x, end=' '] ... I love Python Pradeepto loves KDE Sankarshan loves Openoffice
Hãy để chúng tôi viết một chương trình sẽ lấy tên tệp làm đầu vào từ người dùng và hiển thị nội dung của tệp trong bảng điều khiển.
#!/usr/bin/env python3 name = input["Enter the file name: "] fobj = open[name] print[fobj.read[]] fobj.close[]
Trong dòng cuối cùng, bạn có thể thấy rằng chúng tôi đã đóng đối tượng tệp bằng phương thức trợ giúp của Close [].
Đầu ra
$ ./showfile.py Enter the filename: sample.txt I love Python Pradeepto loves KDE Sankarshan loves Openoffice
Sử dụng câu nói với câu lệnh
Trong các kịch bản thực tế, chúng ta nên cố gắng sử dụng với tuyên bố. Nó sẽ quan tâm đến việc đóng tệp cho bạn.
>>> with open['setup.py'] as fobj: ... for line in fobj: ... print line, ... #!/usr/bin/env python3 """Factorial project""" from setuptools import find_packages, setup setup[name = 'factorial', version = '0.1', description = "Factorial module.", long_description = "A test module for our book.", platforms = ["Linux"], author="Kushal Das", author_email="", url="//pymbook.readthedocs.io/en/latest/", license = "//www.gnu.org/copyleft/gpl.html", packages=find_packages[] ]
Viết trong một tập tin
Hãy để chúng tôi mở một tệp sau đó chúng tôi sẽ viết một số văn bản ngẫu nhiên vào đó bằng cách sử dụng phương thức write []. Chúng ta cũng có thể chuyển đối tượng tệp cho cuộc gọi chức năng in, để nó ghi trong tệp.
>>> fobj = open["ircnicks.txt", 'w'] >>> fobj.write['powerpork\n'] >>> fobj.write['indrag\n'] >>> fobj.write['mishti\n'] >>> fobj.write['sankarshan'] >>> print["This is the last line.", file=fobj] >>> fobj.close[]
Bây giờ đọc tệp chúng tôi vừa tạo
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]0
copyfile.py¶
Trong ví dụ này, chúng tôi sẽ sao chép một tệp văn bản nhất định vào một tệp khác.
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]1
Ghi chú
Cách đọc tệp này không phải lúc nào cũng là một ý tưởng tốt, một tệp có thể rất lớn để đọc và phù hợp với bộ nhớ. Luôn luôn tốt hơn để đọc một kích thước đã biết của tệp và viết nó vào tệp mới.
Bạn có thể thấy chúng tôi đã sử dụng một mô -đun mới ở đây SYS. sys.argv chứa tất cả các tham số dòng lệnh. Hãy nhớ lệnh cp trong shell, sau CP, chúng tôi gõ đầu tiên tệp được sao chép và sau đó là tên tệp mới.
Giá trị đầu tiên trong sys.argv là tên của chính lệnh.
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]2
Đầu ra
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]3
Sử dụng câu nói với câu lệnh
Trong các kịch bản thực tế, chúng ta nên cố gắng sử dụng với tuyên bố. Nó sẽ quan tâm đến việc đóng tệp cho bạn.
Viết trong một tập tin
>>> fobj = open["love.txt"] >>> fobj >>> fobj.close[]4
Hãy để chúng tôi mở một tệp sau đó chúng tôi sẽ viết một số văn bản ngẫu nhiên vào đó bằng cách sử dụng phương thức write []. Chúng ta cũng có thể chuyển đối tượng tệp cho cuộc gọi chức năng in, để nó ghi trong tệp.
Bây giờ đọc tệp chúng tôi vừa tạo
copyfile.py¶
Trong ví dụ này, chúng tôi sẽ sao chép một tệp văn bản nhất định vào một tệp khác.
Ghi chú
Cách đọc tệp này không phải lúc nào cũng là một ý tưởng tốt, một tệp có thể rất lớn để đọc và phù hợp với bộ nhớ. Luôn luôn tốt hơn để đọc một kích thước đã biết của tệp và viết nó vào tệp mới.
Bạn có thể thấy chúng tôi đã sử dụng một mô -đun mới ở đây SYS. sys.argv chứa tất cả các tham số dòng lệnh. Hãy nhớ lệnh cp trong shell, sau CP, chúng tôi gõ đầu tiên tệp được sao chép và sau đó là tên tệp mới.
Giá trị đầu tiên trong sys.argv là tên của chính lệnh.