1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài 4 xử lý file trong python

11 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 11
Dung lượng 531,98 KB

Nội dung

File trong Python Các tệp được đặt tên các vị trí trên đĩa để lưu trữ thông tin liên quan. Chúng được sử dụng để lưu trữ vĩnh viễn dữ liệu trong bộ nhớ (ví dụ: đĩa cứng). Khi ta muốn đọc hoặc ghi vào một tập tin, trước tiên ta cần mở nó. Sau khi hoàn tất, tập tin cần được đóng lại để các tài nguyên gắn với tệp được giải phóng. Do đó, trong Python, các thao tác trên tệp diễn ra theo thứ tự sau:  Mở tệp tin  Đọc hoặc ghi (thực hiện thao tác)  Đóng tệp

ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC BÀI XỬ LÝ FILE, NHẬP XUẤT DỮ LIỆU File Python Các tệp đặt tên vị trí đĩa để lưu trữ thơng tin liên quan Chúng sử dụng để lưu trữ vĩnh viễn liệu nhớ (ví dụ: đĩa cứng) Khi ta muốn đọc ghi vào tập tin, trước tiên ta cần mở Sau hồn tất, tập tin cần đóng lại để tài nguyên gắn với tệp giải phóng Do đó, Python, thao tác tệp diễn theo thứ tự sau:  Mở tệp tin  Đọc ghi (thực thao tác)  Đóng tệp  Thao tác mở tệp Python có hàm open () tích hợp sẵn để mở tệp Hàm trả đối tượng tệp, sử dụng để đọc sửa đổi tệp cho phù hợp >>> f = open("test.txt") # open file in current directory >>> f = open("C:/Python38/README.txt") # specifying full path Chúng ta định chế độ mở tệp Muốn đọc tệp (r), ghi (w) hay nối thêm (a) vào tệp Ta định xem muốn mở tệp chế độ văn hay chế độ nhị phân Mặc định đọc chế độ văn Trong chế độ này, ta nhận chuỗi đọc từ tệp Mặt khác, chế độ nhị phân trả byte chế độ sử dụng xử lý tệp khơng phải văn hình ảnh tệp thực thi Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC Phương thức Mơ tả r Mở tệp để đọc (default) w Mở tệp để ghi Tạo tệp cắt tệp có sẵn x Mở tệp Nếu tệp tồn hoạt động khơng thành cơng a Mở tệp để nối vào cuối tệp mà không cắt bớt Tạo tệp khơng tồn t Mở tệp chế độ văn (default) b Mở tệp chế độ nhị phân + Mở tệp để cập nhật (reading and writing) Ví dụ: f = open("test.txt") # equivalent to 'r' or 'rt' f = open("test.txt",'w') # write in text mode f = open("img.bmp",'r+b') # read and write in binary mode Không giống ngôn ngữ khác, ký tự a khơng có giá trị ngun số 97 khơng mã hóa ASCII (hoặc mã hóa tương đương khác) Hơn nữa, mã hóa mặc định phụ thuộc vào tảng chạy ứng dụng Trong windows cp1252 utf-8 Linux Vì vậy, không dựa vào bảng mã mặc định không mã hoạt động khác tảng khác Do đó, làm việc với tệp chế độ văn bản, ta nên định kiểu mã hóa Ví dụ: f = open("test.txt", mode='r', encoding='utf-8')  Thao tác đóng tệp Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGÔN NGỮ LẬP TRÌNH KHOA HỌC Khi ta thực xong thao tác tệp, cần phải đóng tệp cách Việc đóng tệp giải phóng tài nguyên gắn với tệp Nó thực cách sử dụng phương thức close () có sẵn Python Python có trình thu gom rác để dọn dẹp đối tượng không tham chiếu khơng dựa vào để đóng tệp Ví dụ: f = open("test.txt", encoding = 'utf-8') # perform file operations f.close() Phương pháp khơng hồn tồn an tồn Nếu ngoại lệ xảy ta thực số thao tác với tệp, mã mà khơng đóng tệp Một cách an tồn sử dụng khối try finally Ví dụ: try: f = open("test.txt", encoding = 'utf-8') # perform file operations finally: f.close() Bằng cách này, đảm bảo tệp đóng cách ngoại lệ đưa khiến luồng chương trình dừng lại Cách tốt để đóng tệp sử dụng câu lệnh with Điều đảm bảo tệp đóng khối bên câu lệnh with Chúng ta khơng cần phải gọi phương thức close() mà ngầm thực Ví dụ: with open("test.txt", encoding = 'utf-8') as f: # perform file operations  Thao tác ghi tệp Để ghi vào tệp Python, cần mở write w, ghi thêm a Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGÔN NGỮ LẬP TRÌNH KHOA HỌC Chúng ta cần phải cẩn thận với chế độ w, ghi đè lên tệp tồn Do đó, tất liệu trước bị xóa Việc ghi chuỗi chuỗi byte (đối với tệp nhị phân) thực phương thức write () Phương thức trả số ký tự ghi vào tệp Ví dụ: with open("test.txt",'w',encoding = 'utf-8') as f: f.write("my first file\n") f.write("This file\n\n") f.write("contains three lines\n") Chương trình tạo tệp có tên test.txt thư mục khơng tồn Nếu tồn tại, bị ghi đè Ta phải có ký tự dòng để phân biệt dòng khác  Thao tác đọc tệp Để đọc tệp Python, ta phải mở tệp chế độ đọc r Có nhiều phương pháp khác để đọc tệp Chúng ta sử dụng phương thức read (size) để đọc số kích thước liệu Nếu tham số kích thước khơng định, đọc trả kết đến cuối tệp Chúng ta đọc tệp text.txt viết phần theo cách sau: Ví dụ: >>> f = open("test.txt",'r',encoding = 'utf-8') >>> f.read(4) # read the first data 'This' >>> f.read(4) ' is ' # read the next data >>> f.read() # read in the rest till end of file 'my first file\nThis file\ncontains three lines\n' >>> f.read() '' # further reading returns empty sting Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC Ta thấy phương thức read() trả dòng '\ n' Khi đến cuối tệp, ta nhận chuỗi trống Ta thay đổi vị trí trỏ tệp cách sử dụng phương thức seek() Tương tự, phương thức tell() trả vị trí (theo số byte) Ví dụ: >>> f.tell() 56 # get the current file position >>> f.seek(0) # bring file cursor to initial position >>> print(f.read()) # read the entire file This is my first file This file contains three lines Ta đọc dòng tệp vòng lặp for Như vừa hiệu vừa nhanh chóng Ví dụ: >>> for line in f: print(line, end = '') This is my first file This file contains three lines Trong chương trình này, dịng tệp bao gồm ký tự sang dịng \ n Vì vậy, ta sử dụng tham số end hàm print() để tránh hai dịng in Ngồi ra, sử dụng phương thức readline() để đọc dòng riêng lẻ tệp Phương thức đọc tệp dòng mới, chứa ký tự dòng Ví dụ: >>> f.readline() 'This is my first file\n' >>> f.readline() Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGÔN NGỮ LẬP TRÌNH KHOA HỌC 'This file\n' >>> f.readline() 'contains three lines\n' >>> f.readline() '' Cuối cùng, phương thức readlines() trả danh sách dịng cịn lại tồn tệp Tất phương thức đọc trả giá trị trống đến cuối tệp (EOF) Ví dụ: >>> f.readlines() ['This is my first file\n', 'This file\n', 'contains three lines\n']  Các phương thức với tệp Có nhiều phương thức khác có sẵn với đối tượng tệp, số phương thức sử dụng ví dụ Dưới danh sách đầy đủ phương thức chế độ văn với mơ tả ngắn gọn: Phương thức close() Mơ tả Đóng tệp mở Nó khơng có hiệu lực tệp đóng detach() Tách đệm nhị phân khỏi TextIOBase trả fileno() Trả số nguyên (bộ mô tả tệp) tệp flush() Làm đệm ghi dòng tệp isatty() Trả True luồng tệp có tính tương tác read( n ) Đọc nhiều n ký tự từ tệp Đọc cuối tệp số âm None Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC readable() Trả True luồng tệp đọc từ readline( n =-1) Đọc trả dòng từ tệp Đọc tối đa n byte định readlines( n =-1) Đọc trả danh sách dòng từ tệp Đọc tối đa n byte / ký tự định seek( offset , from = SEEK_SET ) Thay đổi vị trí tệp thành offset bytes, tới from (start, current, end) seekable() Trả True truy cập ngẫu nhiên vào tệp tell() Trả số nguyên đại diện cho vị trí đối tượng tệp truncate( size = None ) Thay đổi kích thước tệp sang size bytes If size khơng xác định, thay đổi kích thước hành writable() Trả True luồng tệp ghi vào write( s ) Ghi chuỗi s vào tệp trả số ký tự ghi writelines( lines ) Ghi danh sách lines vào tệp Quản lý thư mục tệp Python Trong phần này, ta tìm hiểu quản lý tệp thư mục Python, tức tạo thư mục, đổi tên nó, liệt kê tất thư mục làm việc với chúng  Thư mục Python Nếu có số lượng lớn tệp cần xử lý chương trình Python, ta xếp mã thư mục khác để giúp dễ quản lý Thư mục tập hợp tệp thư mục Python có mơ-đun hệ điều hành cung cấp cho nhiều phương pháp hữu ích để làm việc với thư mục (và tệp)  Nhận thư mục Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC Chúng ta lấy thư mục làm việc phương thức getcwd () môđun os Phương thức trả thư mục làm việc dạng chuỗi Chúng ta sử dụng phương thức getcwdb () để lấy dạng đối tượng byte Ví dụ: >>> import os >>> os.getcwd() 'C:\\Program Files\\PyScripter' >>> os.getcwdb() b'C:\\Program Files\\PyScripter' Dấu gạch chéo ngược mang ý nghĩa chuỗi thoát khỏi thư mục Hàm print() hiển thị nội dung sau hàm Ví dụ: >>> print(os.getcwd()) C:\Program Files\PyScripter  Thay đổi thư mục Chúng ta thay đổi thư mục làm việc cách sử dụng phương thức chdir () Đường dẫn mà ta muốn thay đổi phải cung cấp dạng chuỗi phương thức Ta sử dụng dấu gạch chéo lên / dấu gạch chéo ngược \ để tách phần tử đường dẫn Sẽ an tồn khỏi thư mục sử dụng dấu gạch chéo ngược Ví dụ: >>> os.chdir('C:\\Python33') >>> print(os.getcwd()) C:\Python33  Liệt kê thư mục tệp Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC Tất tệp thư mục bên thư mục truy xuất phương thức listdir () Phương thức nhận đường dẫn trả danh sách thư mục tệp đường dẫn Nếu khơng có đường dẫn định, trả danh sách thư mục tệp từ thư mục làm việc Ví dụ: >>> print(os.getcwd()) C:\Python33 >>> os.listdir() ['DLLs', 'Doc', 'include', 'Lib', 'libs', 'LICENSE.txt', 'NEWS.txt', 'python.exe', 'pythonw.exe', 'README.txt', 'Scripts', 'tcl', 'Tools'] >>> os.listdir('G:\\') ['$RECYCLE.BIN', 'Movies', 'Music', 'Photos', 'Series', 'System Volume Information']  Tạo thư mục Chúng ta tạo thư mục phương thức mkdir () Phương thức đưa vào đường dẫn thư mục Nếu đường dẫn đầy đủ khơng định thư mục tạo thư mục làm việc Ví dụ: >>> os.mkdir('test') Trang ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC >>> os.listdir() ['test']  Đổi tên Thư mục Tệp Phương thức rename() đổi tên thư mục tệp Để đổi tên thư mục tệp nào, phương thức rename() nhận vào hai đối số bản: tên cũ làm đối số tên làm đối số thứ hai Ví dụ: >>> os.listdir() ['test'] >>> os.rename('test','new_one') >>> os.listdir() ['new_one']  Xóa thư mục tệp Một tệp xóa (xóa) cách sử dụng phương thức remove () Tương tự, phương thức rmdir () loại bỏ thư mục trống Ví dụ: >>> os.listdir() ['new_one', 'old.txt'] >>> os.remove('old.txt') >>> os.listdir() ['new_one'] >>> os.rmdir('new_one') >>> os.listdir() [] Lưu ý: Phương thức rmdir () xóa thư mục trống Để loại bỏ thư mục không trống, sử dụng phương thức rmtree() bên mơ-đun shutil Ví dụ: Trang 10 ĐỀ CƯƠNG BÀI GIẢNG IT6073 – NGƠN NGỮ LẬP TRÌNH KHOA HỌC >>> os.listdir() ['test'] >>> os.rmdir('test') Traceback (most recent call last): OSError: [WinError 145] The directory is not empty: 'test' >>> import shutil >>> shutil.rmtree('test') >>> os.listdir() [] Trang 11

Ngày đăng: 27/07/2023, 23:40

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w