Phương thức tập tin
Thí dụ
Đọc nội dung của tệp "demofile.txt":
f = open ["demofile.txt", "r"] in [f.Read []]
print[f.read[]]
Chạy ví dụ »
Định nghĩa và cách sử dụng
Phương thức read[]
trả về số byte được chỉ định từ tệp. Mặc định là -1 có nghĩa là toàn bộ tệp.
Cú pháp
Giá trị tham số
kích thước | Không bắt buộc. Số byte để trả lại. Mặc định -1, có nghĩa là toàn bộ tệp. |
Nhiều ví dụ hơn
Thí dụ
Đọc nội dung của tệp "demofile.txt":
f = open ["demofile.txt", "r"] in [f.Read []]
print[f.read[33]]
Chạy ví dụ »
Phương thức tập tin
Tôi muốn đọc 188 byte đầu tiên từ một tệp nhị phân và kiểm tra xem ký tự đầu tiên là 0x47
. Mã dưới đây:
import os
fp=open["try.ts","rb"]
for i in range[100]:
buf=fp.read[188]
if buf[0]=="\x47":
print "OK"
fp.close[]
Nhưng nó cho:
if buf[0]=="\x47":
IndexError: string index out of range
Câu hỏi của tôi là:
- Loại giá trị trả về trong hàm
read[]
là gì? - Làm cách nào để có được ký tự đầu tiên trong một chuỗi hoặc mảng?
Georgy
11K7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges
Hỏi ngày 16 tháng 4 năm 2013 lúc 12:43Apr 16, 2013 at 12:43
if buf[0]=="\x47":
IndexError: string index out of range
Điều đó có nghĩa là buf
của bạn trống rỗng. Bạn ghi đè lên nó 100 lần trong vòng lặp của bạn. Tệp có thể không có 18800 byte trong đó. Ở cuối tệp read
chỉ cần trả về một chuỗi trống. Ý bạn là đặt if
của bạn vào bên trong for
? Nếu vậy, thụt vào nó cho phù hợp.
Georgy
11K7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges
Hỏi ngày 16 tháng 4 năm 2013 lúc 12:43Apr 16, 2013 at 12:47
Điều đó có nghĩa là buf
của bạn trống rỗng. Bạn ghi đè lên nó 100 lần trong vòng lặp của bạn. Tệp có thể không có 18800 byte trong đó. Ở cuối tệp read
chỉ cần trả về một chuỗi trống. Ý bạn là đặt if
của bạn vào bên trong for
? Nếu vậy, thụt vào nó cho phù hợp.Pavel
Anossov
Đã trả lời ngày 16 tháng 4 năm 2013 lúc 12:4714 gold badges147 silver badges123 bronze badges
0
- Pavel Anossovpavel Anossov
58.9K14 Huy hiệu vàng147 Huy hiệu bạc123 Huy hiệu đồng
Loại giá trị trả về trong hàm read [] là gì?returned as a string.
Bạn có nghĩa là phương pháp
read
của loại1. Lệnhif buf[0]=="\x47": IndexError: string index out of range
2 đưa ra:if buf[0]=="\x47": IndexError: string index out of range
3 -> Đọc ở hầu hết các byte kích thước, được trả về dưới dạng chuỗi.if buf[0]=="\x47": IndexError: string index out of range
Nếu đối số kích thước là âm hoặc bị bỏ qua, hãy đọc cho đến khi đạt được EOF. Lưu ý rằng khi ở chế độ không chặn, ít dữ liệu hơn những gì được yêu cầu có thể được trả về, ngay cả khi không có tham số kích thước nào được đưa ra.
Georgy
11K7 Huy hiệu vàng62 Huy hiệu bạc68 Huy hiệu Đồng7 gold badges62 silver badges68 bronze badges
Hỏi ngày 16 tháng 4 năm 2013 lúc 12:43Apr 16, 2013 at 12:47
Điều đó có nghĩa là buf
của bạn trống rỗng. Bạn ghi đè lên nó 100 lần trong vòng lặp của bạn. Tệp có thể không có 18800 byte trong đó. Ở cuối tệp read
chỉ cần trả về một chuỗi trống. Ý bạn là đặt if
của bạn vào bên trong for
? Nếu vậy, thụt vào nó cho phù hợp.Kos
Đã trả lời ngày 16 tháng 4 năm 2013 lúc 12:4724 gold badges167 silver badges230 bronze badges
0
Pavel Anossovpavel Anossov
instead of using the exact index, it could be more useful using a slice. A slice always exists, even
if the object is empty.
58.9K14 Huy hiệu vàng147 Huy hiệu bạc123 Huy hiệu đồng
Loại giá trị trả về trong hàm read [] là gì?
Bạn có nghĩa là phương pháp read
của loại
if buf[0]=="\x47":
IndexError: string index out of range
1. Lệnh if buf[0]=="\x47":
IndexError: string index out of range
2 đưa ra:Mar 1, 2021 at 19:55
if buf[0]=="\x47":
IndexError: string index out of range
3 -> Đọc ở hầu hết các byte kích thước, được trả về dưới dạng chuỗi.SkZNếu đối số kích thước là âm hoặc bị bỏ qua, hãy đọc cho đến khi đạt được EOF. Lưu ý rằng khi ở chế độ không chặn, ít dữ liệu hơn những gì được yêu cầu có thể được trả về, ngay cả khi không có tham số kích thước nào được đưa ra.3 silver badges6 bronze badges