Tôi có một mã python đọc nhiều tệp. nhưng một số tệp cực kỳ lớn do đó tôi gặp lỗi trong các mã khác. tôi muốn một cách để tôi có thể kiểm tra số ký tự của các tệp để tránh đọc những tệp cực lớn đó. Cảm ơn.cách kiểm tra số ký tự của một tệp trong python
Trả lời
os.stat(filepath).st_size
Giả sử bởi 'ký tự' nghĩa là byte. ETA:
tôi cần tổng số ký tự giống như những gì lệnh 'filename wc' mang lại cho tôi unix
Trong đó chế độ? wc
trên chính nó sẽ cung cấp cho bạn một dòng, từ và số byte (giống như stat
), không phải ký tự Unicode.
Có là một công tắc -m
sẽ sử dụng mã hóa hiện tại của miền địa phương để chuyển đổi thành Unicode và sau đó đếm mã: thực sự là những gì bạn muốn? Nó không có bất kỳ ý nghĩa để giải mã thành Unicode nếu tất cả các bạn đang tìm kiếm là các tập tin quá dài. Nếu bạn thực sự phải:
import sys, codecs
def getUnicodeFileLength(filepath, charset= None):
if charset is None:
charset= sys.getfilesystemencoding()
readerclass= codecs.getReader(charset)
reader= readerclass(open(filepath, 'rb'), 'replace')
nchar= 0
while True:
chars= reader.read(1024*32) # arbitrary chunk size
if chars=='':
break
nchar+= len(chars)
reader.close()
return nchar
sys.getfilesystemencoding()
được mã hóa địa phương, tái tạo những gì wc -m
làm. Nếu bạn biết bản thân mã hóa (ví dụ: 'utf-8') thì hãy chuyển mã đó vào thay thế.
Tôi không nghĩ bạn muốn làm điều này.
os.path.getsize(path)
Return kích thước, tính theo byte, của con đường. Nâng cao os.error nếu tệp không tồn tại hoặc không thể truy cập được.
Hãy thử
import os
os.path.getsize(filePath)
để có được kích thước của tập tin của bạn, tính bằng byte.
Nếu bạn muốn mã số unicode tính cho một tệp văn bản được mã hóa cụ thể, bạn sẽ phải đọc toàn bộ tệp để thực hiện điều đó.
Tuy nhiên, nếu bạn muốn đếm byte cho một tập tin nào đó, bạn muốn os.path.getsize()
, mà chỉ nên cần phải làm một stat
vào file miễn là hệ điều hành của bạn có stat()
hoặc cuộc gọi tương đương (tất cả Unixes và Windows làm).
Vì các lược đồ mã hóa UTF, có thể bạn sẽ có các ký tự có số lượng byte khác nhau. –
cách khác
f=open("file")
os.fstat(f.fileno()).st_size
f.close()
hi bob, tôi cần tổng số ký tự giống như những gì lệnh 'filename wc' mang lại cho tôi unix – randeepsp
@randeepsp: Cập nhật câu hỏi của bạn có thêm thông tin. Không thêm loại thông tin quan trọng này vào nhận xét. –
Để đếm byte, 'os.path.getsize (filepath)' dễ nhớ hơn 'os.stat (filepath) .st_size' (nhờ @Sapph) – hobs