Trăn đường dẫn tương đối toàn cầu
Mô-đun toàn cầu Python được sử dụng để tìm tên đường dẫn khớp với một mẫu cụ thể. Thuật ngữ chung "glob" được sử dụng để mô tả các phương pháp đối sánh các mẫu cụ thể theo quy tắc shell Unix. Với toàn cầu, bạn cũng có thể sử dụng các ký tự đại diện (“*, ?, [phạm vi]) ngoài tìm kiếm chuỗi chính xác để truy xuất đường dẫn hiệu quả hơn Show
Hãy tìm hiểu mô-đun toàn cầu Python Mục lục Mô-đun toàn cầu Python là gì?Mô-đun toàn cầu Python cho phép tìm kiếm qua tên đường dẫn để tìm các tệp phù hợp với một mẫu nhất định (do bạn xác định). Các quy tắc do Unix shell thiết lập được sử dụng để xác định mẫu được cung cấp để khớp tệp Tất cả các đường dẫn tệp khớp với một mẫu nhất định được trả về bằng hàm toàn cầu của mô-đun toàn cục. Chúng tôi có thể sử dụng toàn cầu để tìm kiếm một mẫu tệp nhất định hoặc có lẽ hiệu quả hơn, chúng tôi có thể sử dụng các ký tự đại diện để tìm kiếm các tệp có tên tệp khớp với một mẫu nhất định Để sử dụng toàn cầu, chúng ta phải nhập nó bằng câu lệnh nhập Python như bên dưới
Ghi chú. glob là một mô-đun tích hợp đi kèm với Python nên bạn không cần cài đặt nó riêng biệt với bản cài đặt Python của mình (e. g. sử dụng pip hoặc conda) trước khi nhập nó Sau khi nhập mô-đun toàn cầu, chúng tôi có thể sử dụng nó để tìm các tệp khớp với một mẫu cụ thể trên máy cục bộ của chúng tôi Đoạn mã sau khớp với một tên tệp cụ thể trong thư mục /opt/app/tutorial/ và hiển thị nó ở đầu ra
đầu ra là
Trong đoạn mã trên, chúng tôi chỉ tìm kiếm một tệp văn bản, chúng tôi cũng có thể tìm kiếm nhiều tệp có cùng phần mở rộng tệp
Như bạn có thể thấy, chúng tôi đã chỉ định “*. txt” khớp với tất cả các tệp có phần mở rộng txt trong thư mục được chỉ định. Ký tự “*” là ký tự đại diện Giả sử chúng ta có năm tệp txt sau trong thư mục /opt/app/tutorial/ file1.txt file2.txt file3.txt file4.txt file5.txt Sau khi thực thi mã Python, tôi nhận được đầu ra sau
quả địa cầu. hàm glob() trả về danh sách tất cả các tệp khớp với đường dẫn mà chúng tôi đã chỉ định Bạn cũng có thể thấy rằng… Hàm glob() của mô-đun glob Python trả về kết quả theo thứ tự tùy ý Sử dụng Đường dẫn tuyệt đối và tương đối với Python toàn cầuĐường dẫn chúng ta cung cấp cho hàm global() có thể là tuyệt đối hoặc tương đối Hãy xem điều này có nghĩa là gì…
Hai đoạn mã chúng ta đã thấy trước đây sử dụng một đường dẫn tuyệt đối Bây giờ, hãy xem một ví dụ sử dụng đường dẫn tương đối…
Đường dẫn được chỉ định trong đoạn mã này là đường dẫn tương đối và nó đề cập đến thư mục hiện tại Từ đầu ra, bạn có thể thấy rằng danh sách tệp chỉ chứa tên tệp chứ không phải đường dẫn đầy đủ cho mỗi tệp
Cách sử dụng quả cầu để tìm tệp theo cách đệ quyTừ đệ quy có nghĩa là sự lặp lại liên quan đến việc áp dụng lặp đi lặp lại một quy tắc. Chúng tôi cũng có thể sử dụng toàn cầu để tìm kiếm tệp theo cách đệ quy, nghĩa là tìm kiếm tệp trong thư mục con Bản chất đệ quy của mô-đun toàn cầu rất hữu ích vì bạn có thể không biết vị trí chính xác của các tệp bạn đang tìm kiếm Để kích hoạt hành vi đệ quy, bạn phải chuyển đối số boolean đệ quy cho hàm glob() được đặt thành True. Đối số này là Sai theo mặc định Trước khi sử dụng đối số đệ quy, chúng tôi muốn hiểu hành vi của ký tự đại diện dấu hoa thị kép (**) khi được sử dụng với toàn cầu. chức năng toàn cầu () Tạo một thư mục có tên test_dir trong thư mục hiện tại và sau đó bên trong test_dir tạo một tệp có tên file6. txt. Cấu trúc thư mục của chúng tôi trở thành như sau ________số 8Bây giờ hãy thực thi mã Python trước đó sử dụng “*. txt” dưới dạng biểu thức tên đường dẫn. Đầu ra như sau
Bây giờ, chuyển đối số đệ quy cho hàm toàn cầu 0Khi bạn thực thi mã, bạn sẽ nhận thấy rằng đầu ra không thay đổi. Đó là bởi vì đối số đệ quy phải được sử dụng cùng với ký tự đại diện hai dấu hoa thị (**) Cập nhật biểu thức được truyền cho hàm global() như hình bên dưới (không thay đổi bất kỳ điều gì khác trong mã trước đó) 1Lần này trong đầu ra, bạn cũng sẽ thấy “test_dir/file6. txt”. Mã của chúng tôi đã phù hợp với. txt trong thư mục hiện tại và cả thư mục. txt trong thư mục con test_dir 2Bây giờ, hãy thử đặt đệ quy thành Sai mà không thay đổi biểu thức tên đường dẫn 3đầu ra là 4Mã của chúng tôi chỉ khớp với tệp trong thư mục con Bây giờ bạn đã biết cách hoạt động của dấu hoa thị kép cùng với tham số đệ quy khi sử dụng hàm glob() Sử dụng Ký tự đại diện với toàn cầuVới mô-đun toàn cầu, bạn có thể sử dụng ký tự đại diện. Có nhiều ký tự đại diện nhưng các ký tự đại diện được sử dụng nhiều nhất được giải thích bên dưới Dấu hoa thị (*). toàn cầu sử dụng dấu hoa thị (*) còn được gọi là dấu sao để khớp với 0 hoặc nhiều ký tự 5Trong các ví dụ trên, * sẽ khớp với tất cả các tệp có phần mở rộng được chỉ định Dấu hoa thị kép (**). hai dấu hoa thị (**) giống như dấu hoa thị đơn nhưng chúng hoạt động với các thư mục con. Khi bạn đang tìm kiếm đệ quy, hãy sử dụng dấu hoa thị kép (**) để tìm kiếm các tệp trong các thư mục hiện tại cũng như trong các thư mục con 6Dấu ngoặc vuông ([ ]). dấu ngoặc vuông là ký tự đại diện rất mạnh vì chúng cho phép tìm kiếm tệp bằng cách sử dụng các tổ hợp ký tự khác nhau Ví dụ
Hãy thử một số ví dụ thực tế để hiểu các ký tự đại diện Trước đây chúng ta đã thấy cách hoạt động của các ký tự đại diện * và **. Bây giờ hãy xem một ví dụ với dấu ngoặc vuông ([ ]) Trong dấu ngoặc vuông, chúng tôi chỉ định mẫu số hoặc chữ cái để tìm kiếm 7Tạo các tệp sau trong thư mục hiện tại để xác nhận các biểu thức ký tự đại diện hoạt động như mong đợi 8Và bây giờ thực thi mã đầu ra là 9Mã của chúng tôi hoạt động như mong đợi và các tệp “fox. txt” và “67. txt” không khớp Tại sao bạn nên sử dụng iglob vs glob trong Python?Cho đến bây giờ chúng ta đã sử dụng hàm global(). Trong mô-đun toàn cầu có một hàm khác gọi là iglob() Hàm iglob() tương tự như hàm glob(), điểm khác biệt chính là iglob() trả về một trình tạo tạo ra các tên tệp khớp với mẫu đã cho Hãy xác nhận loại đối tượng mà hàm iglob() trả về bằng cách sử dụng một trong các ví dụ mã trước đó. Chúng ta sẽ chỉ thay thế chức năng toàn cầu bằng chức năng iglob 0Hàm glob() đi qua tất cả các tệp và lưu trữ chúng trong bộ nhớ cùng một lúc, trong khi iglob() trả về một trình tạo cho phép lặp qua tất cả các tệp mà không lưu trữ chúng đồng thời trong bộ nhớ Bằng cách chuyển trình tạo tới hàm next() của Python, bạn sẽ lấy lại tên tệp đầu tiên được trả về bởi hàm iglob 1Hàm iglob() rất hữu ích khi chúng ta so khớp một số lượng lớn tệp. Chúng tôi có thể mạo hiểm lấp đầy toàn bộ bộ nhớ bằng cách tải tất cả chúng bằng cách sử dụng glob() Để tránh điều này, iglob() giúp chúng tôi khớp tất cả các tên tệp ở dạng trình tạo giúp cải thiện hiệu suất và giảm mức sử dụng bộ nhớ Để in tất cả các tệp khớp với hàm iglob, bạn có thể sử dụng vòng lặp Python for 2Phần kết luậnBây giờ bạn đã hiểu rõ về cách thức hoạt động của mô-đun toàn cầu. Bạn đã học cách mô-đun toàn cục đặc biệt hữu ích cho các tác vụ liên quan đến khớp mẫu tên tệp và cách lấy danh sách tất cả các tệp tuân theo một mẫu cụ thể Chúng tôi đã trình bày một số ví dụ thực tế về cách thức hoạt động của mô-đun toàn cục, bao gồm một số ký tự đại diện được sử dụng nhiều nhất Và bạn cũng đã thấy sự khác biệt giữa glob() và iglob() và tại sao bạn nên sử dụng iglob() thay vì hàm glob() tiền thưởng đọc. hiểu sâu hơn về Python và tìm hiểu thêm về năng suất Python mà chúng tôi đã đề cập khi mô tả hành vi của hàm iglob() Bài viết liên quanKế thừa lớp Python. Hướng dẫn về mã tái sử dụng Lỗi Python. Quá nhiều giá trị để giải nén. Hãy sửa chữa nó Tìm giá trị tối thiểu và tối đa trong từ điển Python [Từng bước] Claudio Sabato Tôi là Trưởng nhóm công nghệ, Kỹ sư phần mềm và Huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành Nhà phát triển siêu hạng Toàn cầu có trả về đường dẫn tuyệt đối không?Nếu tên tệp hoặc tên đường dẫn khớp với đường dẫn tuyệt đối thì hàm glob() trả về kết quả khớp ở dạng danh sách ; .
Toàn cầu Python có đệ quy không?Từ Python 3. 5 trở đi, lập trình viên có thể sử dụng hàm Glob() để tìm tệp theo cách đệ quy . Trong Python, mô-đun glob đóng một vai trò quan trọng trong việc truy xuất các tệp và tên đường dẫn khớp với mẫu đã chỉ định được truyền dưới dạng tham số của nó. Quy tắc mẫu của toàn cầu tuân theo các quy tắc mở rộng đường dẫn Unix tiêu chuẩn.
Toàn cầu có hỗ trợ regex không?Các quy tắc mẫu cho toàn cục không phải là biểu thức chính quy . Thay vào đó, chúng tuân theo các quy tắc mở rộng đường dẫn Unix tiêu chuẩn. Chỉ có một số ký tự đặc biệt. hai ký tự đại diện khác nhau và phạm vi ký tự được hỗ trợ. Các quy tắc mẫu được áp dụng cho các phân đoạn của tên tệp (dừng ở dấu tách đường dẫn, /).
Làm cách nào để sử dụng mô-đun toàn cầu trong Python?Cú pháp. Sau đây là cú pháp sử dụng hàm iglob() của mô-đun glob bên trong chương trình Python. iglob(tên đường dẫn, *, đệ quy=Sai) . # Nhập mô-đun toàn cầu trong chương trình nhập toàn cầu dưới dạng gb # Khởi tạo một biến inVar = gb. . # Trả về loại biến của lớp in (loại (inVar)) |