01/10/2018, 00:07
Cần giúp đỡ về truy xuất tập tin
Em mới học Python và đang đọc đến phần truy xuất dữ liệu từ tập tin. Hiện tại em đang muốn tìm tất các từ nào đó trong tập tin thì em sử dụng vòng lặp for và count ra. Nhưng nếu em thêm đoạn read file ra (inp = fhand.read()) để in ra toàn bộ nội dung file thì nó sẽ không chạy vào vòng lặp của em nữa. Ai có thể giải thích cho em hiểu được không ạ? Em xin cám ơn mọi người.
fname = raw_input('Enter the name file:')
try:
fhand = open(fname)
except:
print 'File cannot be opened.',fname
exit()
inp = fhand.read()
count = 0
for line in fhand:
if line.startswith('From:'):
count = count + 1
print 'there were',count,'subject lines in',fname
print inp
Bài liên quan
Hàm
read()
của file object sẽ đọc hết tất cả những gì trong file và con trỏ bây giờ sẽ nằm cuối file. Vì vậy, khi bạn muốn đọc nữa thì còn gì đâu để đọc chuyện là thế đó.Mình thấy vòng lặp nên sửa thành
for line in inp.split('\n'):
thì kết quả cũng tương tự thôi.P/s: Nếu có lỗi gì thì cứ báo lại, mình sửa tiếp nha.
Thank bạn,
Nếu không phiền bạn có thể giải thích cho mình sao mà thêm .split(’\n’) thì nó chạy ko? vì lúc mình thử line in inp thì nó cũng ko hoạt động.
Vì biến
inp
lúc này là kiểu chuỗistr()
(cách kiểm tra kiểu:type(biến)
) và kiểu chuỗi có methodsplit(sep [, maxsplit])
dùng để tách chuỗi (bởisep
) thành 1 list (với số lượng tối đa làmaxsplit
, mặc địnhmaxsplit
là không giới hạn).Khi dùng
inp.split('\n')
thì nó sẽ tách nội dung file thành các dòng (gặp ký tự ‘\n’ là tách ra - và ký tự ‘\n’ cũng không được ghi vào list). Bạn cũng có thể dùngfhand.readlines()
và nó đọc theo dòng và trả về 1 list (ký tự ‘\n’ không bị loại bỏ).test.txt
có nội dung:split()
:readlines()
:Bạn tham khảo:
python -c "help(str.split)"
hoặcpython -c "help(str)"