Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas.
Mở khóa bài học này
Bài học này chỉ dành cho các thành viên. Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas.Join us and get access to thousands of tutorials and a community of expert Pythonistas.
Mở khóa bài học này
Bài học này chỉ dành cho các thành viên. Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn và một cộng đồng chuyên gia Pythonistas. Looks like there’s an issue with video playback 🙁 This might be due to a temporary outage or because of a configuration issue with your browser. Please see our video player troubleshooting guide to resolve the issue.
- Xin lỗi! Có vẻ như có một vấn đề với phát lại video 🙁 Điều này có thể là do sự cố ngừng hoạt động tạm thời hoặc do sự cố cấu hình với trình duyệt của bạn. Vui lòng xem Hướng dẫn khắc phục sự cố trình phát video của chúng tôi để giải quyết vấn đề.
- Bảng điểm
Nhận xét & Thảo luận [3] Now you’ve got a list of all the files in your current directory, but what happens when you want to actually get the attributes of those files? Like, the last time they were modified, or when they were created, or their size, or their permissions, or something like that?
00:00 Bây giờ bạn đã có một danh sách tất cả các tệp trong thư mục hiện tại của bạn, nhưng điều gì xảy ra khi bạn muốn thực sự nhận được các thuộc tính của các tệp đó? Giống như, lần cuối cùng họ được sửa đổi, hoặc khi chúng được tạo ra, hoặc kích thước của chúng, hoặc quyền của họ, hoặc một cái gì đó tương tự? That’s the topic of this lesson.
00:15 Đó là chủ đề của bài học này.
Just like in the last lesson, there are three different options for getting file information:
two from the os
module, and then one from the pathlib
module.
00:18 Giống như trong bài học cuối cùng, có ba tùy chọn khác nhau để nhận thông tin tệp: hai từ mô -đun os
, và sau đó là một tùy chọn từ mô -đun pathlib
.
And in fact, I say there are three different options, but there are many more than just these.
These are just the three that I’m going to show you today.
00:28 Và trên thực tế, tôi nói có ba lựa chọn khác nhau, nhưng có nhiều hơn là chỉ. Đây chỉ là ba người mà tôi sẽ cho bạn thấy hôm nay. The first is
os.stat[]
, which takes in a path as a string and then returns a stat_result
object that has that file data in it.
So that stat_result
object is something where you can access fields of that object
and get the file data.
00:35 Đầu tiên là os.stat[]
, có một đường dẫn dưới dạng chuỗi và sau đó trả về một đối tượng stat_result
có dữ liệu tệp đó trong đó. Vì vậy, đối tượng stat_result
là một cái gì đó mà bạn có thể truy cập các trường của đối tượng đó và lấy dữ liệu tệp. Then os.scandir[]
and pathlib.Path.iterdir[]
,
as I mentioned in the last lesson, provide this information
within the objects that they return in their iterators.
00:52 Sau đó, os.scandir[]
và pathlib.Path.iterdir[]
, như tôi đã đề cập trong bài học cuối cùng, cung cấp thông tin này trong các đối tượng mà họ quay lại trong trình lặp của họ. The objects in those
iterators all have .stat[]
methods that return the same data as os.stat[]
. So again, os.stat[]
is something that you can use
independent of these iteration paradigms, whereas os.scandir[]
and pathlib
1, they package this .stat[]
data up with the objects that they actually are iterating through.
01:04 Các đối tượng trong các trình lặp đó đều có các phương thức .stat[]
trả về cùng một dữ liệu với os.stat[]
. Vì vậy, một lần nữa, os.stat[]
là thứ mà bạn có thể sử dụng độc lập với các mô hình lặp này, trong khi os.scandir[]
và pathlib
1, chúng đóng gói dữ liệu .stat[]
này với các đối tượng mà chúng thực sự đang lặp đi lặp lại.
So it’s more convenient when you’re doing iteration, but os.stat[]
might be more convenient
if you just need a one-off, “What’s in this file?”
01:25 Vì vậy, nó thuận tiện hơn khi bạn thực hiện việc lặp lại, nhưng os.stat[]
có thể thuận tiện hơn nếu bạn chỉ cần một lần, thì sao trong tập tin này? The sample directory that
I’ll use for this is the same as in the last lesson. It has a couple of subdirectories with a few files in each,
and then has a few files just in the top-level directory.
01:33 Thư mục mẫu mà tôi sẽ sử dụng cho điều này giống như trong bài học trước. Nó có một vài thư mục con với một vài tệp trong mỗi tệp, và sau đó có một vài tệp chỉ trong thư mục cấp cao nhất. So let’s take a look at this over in the REPL. Okay, file data: how do you get it? Well, let’s try this. First, I just want to get the contents of this directory, and as you can see, there are a lot of files to choose from.
01:43 Vì vậy, hãy để Lôi xem xét điều này trong phần lại. Được rồi, dữ liệu tệp: Làm thế nào để bạn có được nó? Chà, hãy để thử này. Đầu tiên, tôi chỉ muốn có được nội dung của thư mục này và như bạn có thể thấy, có rất nhiều tệp để lựa chọn. And the first method that I
looked at in the slides was the os.stat[]
function. That just takes in a file path, a filename,
and gives you an pathlib
5 object as the results.
01:56 và phương pháp đầu tiên mà tôi đã xem xét trong các slide là hàm os.stat[]
. Điều đó chỉ có trong một đường dẫn tệp, tên tệp và cung cấp cho bạn một đối tượng pathlib
5 làm kết quả. Now, this stat_result
object has a lot of different fields, and I can’t really get into all of them because there’s many more than are shown here,
and it’s just a wealth of information.
02:10 Bây giờ, đối tượng stat_result
này có rất nhiều lĩnh vực khác nhau và tôi có thể thực sự tham gia vào tất cả chúng bởi vì có nhiều thứ hơn được hiển thị ở đây, và nó chỉ là rất nhiều thông tin. But as you can see,
you have the mode, which is the permissions associated with that object. You have a unique identifier for the object.
You have all sorts of different things: the number of links, the creation and modification time.
02:19 Nhưng như bạn có thể thấy, bạn có chế độ, đó là các quyền được liên kết với đối tượng đó. Bạn có một định danh duy nhất cho đối tượng. Bạn có tất cả các loại khác nhau: số lượng liên kết, thời gian sáng tạo và sửa đổi. Some of these will even differ by system. On Windows, on Linux, on Mac, some of these will have different values. You really have to be careful and understand your system well to work with these.
02:30 Một số trong số này thậm chí sẽ khác nhau theo hệ thống. Trên Windows, trên Linux, trên Mac, một số trong số này sẽ có các giá trị khác nhau. Bạn thực sự phải cẩn thận và hiểu rõ hệ thống của bạn để làm việc với những điều này. In order to show you just a little bit
about how you can actually access these kinds of things, I’m just going to focus on the pathlib
7,
the modification time—last-modified time, I should say—just so that I can have one thing to show you
as I go through with these different methods of getting statistics for objects.
02:41 Để chỉ cho bạn một chút về cách bạn thực sự có thể truy cập vào những thứ này, tôi sẽ tập trung vào pathlib
7, thời gian sửa đổi thời gian được sửa đổi, tôi nên nói là chỉ cần Tôi có thể có một điều để cho bạn thấy khi tôi trải qua các phương pháp khác nhau để nhận số liệu thống kê cho các đối tượng. So, as you can see, if you call this,
you can then directly access those fields. So I could say pathlib
7,
and this is a time represented as floating-point seconds.
02:58 Vì vậy, như bạn có thể thấy, nếu bạn gọi cái này, sau đó bạn có thể truy cập trực tiếp vào các trường đó. Vì vậy, tôi có thể nói pathlib
7, và đây là thời gian được thể hiện dưới dạng giây nổi. If you’re not
familiar with that representation, I would encourage you to check out the Real Python tutorials on the topic.
But the gist of it is, I’ll have to convert that if I want a more readable time.
03:11 Nếu bạn không quen thuộc với đại diện đó, tôi sẽ khuyến khích bạn xem các hướng dẫn Python thực sự về chủ đề này. Nhưng ý chính của nó là, tôi sẽ phải chuyển đổi điều đó nếu tôi muốn có một thời gian dễ đọc hơn. I’d have to say something like pathlib
9.
So, there’s a fair amount of work that you’ll need to do here,
if you want to actually convert these into nice, readable, human-intelligible formats.
03:21 Tôi phải nói điều gì đó như pathlib
9. Vì vậy, có một số lượng công việc khá lớn mà bạn sẽ cần làm ở đây, nếu bạn muốn thực sự chuyển đổi chúng thành các định dạng tốt, dễ đọc, có đủ điều kiện. That’s just because this data is stored, really, at the system level, where everything is just bare numbers.
03:36 mà chỉ vì dữ liệu này được lưu trữ, thực sự, ở cấp độ hệ thống, nơi mọi thứ chỉ là số trần. Now that you know how to, at least, get these things and convert them, a little bit, into a more readable format, I’ll show you the other two ways that I want to talk about to actually get this data.
03:43 Bây giờ bạn đã biết làm thế nào, ít nhất, có được những thứ này và chuyển đổi chúng, một chút, thành một định dạng dễ đọc hơn, tôi sẽ chỉ cho bạn hai cách khác mà tôi muốn nói về việc thực sự nhận được dữ liệu này . I could say os.stat[]
0 on the current directory, and then let’s make it a little bit
more informative output. Let’s say something like os.stat[]
1, that’s how you get the statistics for a os.stat[]
2 object.
04:10 Và sau đó tôi có thể nói os.stat[]
3, và bây giờ tôi có thể nói điều gì đó tốt đẹp, như os.stat[]
4, và sau đó tôi có thể nói, os.stat[]
5 của os.stat[]
6. And then I can say os.stat[]
3, and now I can say something nice, like os.stat[]
4, and then I could say, os.stat[]
5 of the os.stat[]
6.
04:29 Và vì vậy điều này sẽ cung cấp cho chúng tôi mọi thứ ở một định dạng dễ đọc. Và trên thực tế, bạn có thể thấy rằng đó là những gì nó làm. Nó cho bạn biết mỗi tên tệp và thời gian họ được sửa đổi lần cuối. And so this should give us everything in a nice readable format. And in fact, you can see that that’s what it does. It tells you each filename and the time that they were last modified.
04:39 Và như bạn có thể thấy, hầu hết trong số họ thực sự là cùng một lúc, bởi vì tôi đã tạo ra tất cả cho các mục đích của bài học này, nhưng sau đó một trong số đó tôi đã sửa đổi gần đây để đưa ra ít nhất một số loại. And as you can see, most of them were actually at the same time, because I created these all for the purposes of this lesson, but then one of them I modified just recently to give at least some variety.
04:48 Sau đó, tùy chọn os.stat[]
7 ở đây hoạt động gần như chính xác theo cùng một cách, ngoại trừ bạn phải tạo đối tượng os.stat[]
8 trước, trước khi bạn có thể bắt đầu lặp lại thông qua nó. Then the os.stat[]
7 option here works
almost exactly the same way, except you have to create the os.stat[]
8 object first, before you can start iterating through it.
04:59 Vì vậy, tôi tạo đối tượng os.stat[]
8, và sau đó tôi thực sự có thể sao chép và dán. Tôi chỉ cần gọi hàm stat_result
0 trên đối tượng stat_result
1. So I create the os.stat[]
8 object, and then I can really pretty much just copy
and paste. I just have to call the stat_result
0 function on the stat_result
1 object.
05:08 Vì vậy, trong thực tế, những gì tôi làm là tôi gọi phương thức stat_result
0 của đối tượng stat_result
1, sẽ là một cách tốt hơn để nói điều đó. Nhưng điều này làm chính xác điều tương tự và nó thậm chí còn có cùng tên phương pháp, do đó, siêu thuận tiện khi bạn làm việc với những điều này.
So in reality, what I’m doing is I’m calling the stat_result
0 method of the stat_result
1 object,
would be a better way to say that. But this does exactly the same thing
and it even has the same method names, so that’s super convenient for when you’re working with these.
05:21 Thực sự, hai chức năng này theo cùng một cách chính xác. Vì vậy, đó là ba cách khác nhau để có được số liệu thống kê từ các tệp sử dụng Python. Trong bài học tiếp theo, tôi sẽ bao gồm một cái gì đó mà tôi đã bao gồm, đó là cách tạo ra các thư mục. Really, these two function in almost exactly the same way. So, that’s three different ways to get statistics from files using Python. In the next lesson, I’ll cover something I haven’t covered yet, which is how to create directories.