Trong bài viết này, chúng ta sẽ thảo luận về các cách khác nhau để kiểm tra xem một tệp có trống hay không. e. kích thước của nó là 0 sử dụng os. stat[] hoặc os. đường dẫn. getsize[] hoặc bằng cách đọc ký tự đầu tiên của nó
Kiểm tra xem tệp có trống không bằng os. thống kê [] trong Python
Python cung cấp một chức năng để lấy số liệu thống kê về tệp,
os.stat[path, *, dir_fd=None, follow_symlinks=True]
Nó chấp nhận đường dẫn tệp [chuỗi] làm đối số và trả về một đối tượng của cấu trúc stat, chứa các thuộc tính khác nhau về tệp tại đường dẫn đã cho. Một trong những thuộc tính này là st_size, cho biết kích thước của tệp tính bằng byte
Hãy sử dụng cái này để lấy kích thước của tệp 'mysample. txt’ và nếu kích thước bằng 0 thì có nghĩa là tệp trống i. e
quảng cáo
import os file_path = 'mysample.txt' # check if size of file is 0 if os.stat[file_path].st_size == 0: print['File is empty'] else: print['File is not empty']
Vì tệp của chúng tôi trống, nên đầu ra sẽ là,
File is empty
P. S. Chúng tôi đã có một tệp trống 'mysample. txt’ trong cùng thư mục
Nhưng chúng ta nên cẩn thận khi sử dụng nó vì nếu tệp không tồn tại ở đường dẫn đã cho, thì nó có thể gây ra lỗi i. e. FileNotFoundError,
FileNotFoundError: [WinError 2] The system cannot find the file specified: FILE_NAME
Do đó, trước tiên chúng ta nên kiểm tra xem tệp có tồn tại hay không trước khi gọi os. thống kê[]. Vì vậy, hãy tạo một hàm riêng để kiểm tra xem tệp có tồn tại không và nó có trống không i. e
import os def is_file_empty[file_path]: """ Check if file is empty by confirming if its size is 0 bytes""" # Check if file exist and it is empty return os.path.exists[file_path] and os.stat[file_path].st_size == 0
Hàm này trước tiên xác nhận xem tệp có tồn tại hay không, nếu có thì nó sẽ kiểm tra xem kích thước của tệp có bằng 0 hay không [nếu tệp trống]
Hãy sử dụng chức năng này để kiểm tra xem tệp 'mysample. txt' trống,
file_path = 'mysample.txt' # check if file exist and it is empty is_empty = is_file_empty[file_path] if is_empty: print['File is empty'] else: print['File is not empty']
đầu ra
File is empty
Nó xác nhận rằng tập tin 'mysample. txt‘ trống
Kiểm tra xem tệp có trống không bằng os. đường dẫn. getsize[] trong Python
Trong mô-đun Python os cung cấp một chức năng khác i. e
os.path.getsize[path]
Nó chấp nhận đường dẫn tệp [một chuỗi] làm đối số và trả về kích thước của tệp theo byte. Nếu tệp không tồn tại và đường dẫn đã cho thì nó sẽ tăng os. lỗi
Hãy sử dụng cái này để lấy kích thước của tệp 'mysample. txt‘ và nếu kích thước bằng 0 thì có nghĩa là tệp trống i. e
________số 8_______Vì tệp của chúng tôi trống, nên đầu ra sẽ là,
File is empty
Nếu tệp không tồn tại ở đường dẫn đã cho, thì nó có thể gây ra lỗi i. e. FileNotFoundError,
FileNotFoundError: [WinError 2] The system cannot find the file specified: FILE_NAME
Do đó, trước tiên chúng ta nên kiểm tra xem tệp có tồn tại hay không. Nếu tệp tồn tại thì chỉ gọi os. đường dẫn. getsize[]. Chúng tôi đã tạo một chức năng kiểm tra xem tệp có tồn tại hay không và nếu nó tồn tại thì kiểm tra xem nó có trống hay không,
Bạn có thể xác định xem một tệp có trống hay không bằng cách sử dụng giá trị trả về của FileInfo. thuộc tính chiều dài. Thuộc tính FileInfo.Length
trả về kích thước của tệp hiện tại, tính bằng byte. Nếu tệp được chỉ định trống, nó sẽ trả về 0 byte
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sử dụng Hệ thống;
sử dụng Hệ thống. IO;
lớp công khai Ví dụ
{
công khai tĩnh vô hiệu Chính[]
{
chuỗi đường dẫn = @"C. \dữ liệu. txt";
var f = mới FileInfo[path];
nếu [f. Độ dài == 0] {
Bảng điều khiển. WriteLine["Tệp {0} trống", f.Tên];
}
khác {
Bảng điều khiển. WriteLine["Tệp {0} không trống",< . f.Tên];
}
}
}
Tải xuống mã
Nếu tệp được chỉ định không tồn tại, thì System.IO.FileNotFoundException
được nâng lên. Bạn có thể tránh ngoại lệ bằng cách kiểm tra xem tệp có tồn tại hay không trước khi thao tác với nó, sử dụng thuộc tính FileInfo.Exists
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sử dụng Hệ thống;
sử dụng Hệ thống. IO;
lớp công khai Ví dụ
{
công khai tĩnh vô hiệu Chính[]
{
chuỗi đường dẫn = @"C. \dữ liệu. txt";
var f = mới FileInfo[path];
nếu [. f. Tồn tại] {
Bảng điều khiển. WriteLine["Tệp {0} không tồn tại",< . f.Tên];
}
khác nếu [f.Độ dài == 0] {
Bảng điều khiển. WriteLine["Tệp {0} trống", f.Tên];
}
khác {
Bảng điều khiển. WriteLine["Tệp {0} không trống",< . f.Tên];
}
}
}
Tải xuống mã
Lưu ý rằng phương thức FileInfo.Length
có thể trả về độ dài khác 0 trong một số trường hợp khi chỉ còn lại ký tự đánh dấu thứ tự byte [BOM] trên tệp. Bạn có thể muốn thêm các xác thực tiếp theo để tránh gặp rủi ro về hành vi không xác định sau này. Ý tưởng là đọc nội dung của một tệp thành một chuỗi bằng cách sử dụng phương thức File.ReadAllText[]
và kiểm tra độ dài của chuỗi. Vì phương thức File.ReadAllText[]
đọc tất cả văn bản trong tệp thành một chuỗi, bạn chỉ nên gọi phương thức này nếu kích thước được trả về bởi thuộc tính FileInfo.Length
là một chữ số. Ví dụ sau minh họa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
sử dụng Hệ thống;
sử dụng Hệ thống. IO;
lớp công khai Ví dụ
{
công khai tĩnh bool IsFileEmpty[string fileName]
{
var f = mới FileInfo[fileName];
trả lại f. Chiều dài == 0 . f. Độ dài