Hướng dẫn what does read () return in python? - hàm read () trả về trong python là gì?

0

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

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à:

  1. Loại giá trị trả về trong hàm read() là gì?
  2. Làm cách nào để có được ký tự đầu tiên trong một chuỗi hoặc mảng?

Hướng dẫn what does read () return in python? - hàm read () trả về trong python là gì?

Georgy

10,9k7 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

if buf[0]=="\x47":
IndexError: string index out of range
0 chỉ cần trả về một chuỗi trống. Ý bạn là đặt
if buf[0]=="\x47":
IndexError: string index out of range
1 của bạn vào trong
if buf[0]=="\x47":
IndexError: string index out of range
2? Nếu vậy, thụt vào nó cho phù hợp.

Georgy

10,9k7 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

Hướng dẫn what does read () return in python? - hàm read () trả về trong python là gì?

Đ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

if buf[0]=="\x47":
IndexError: string index out of range
0 chỉ cần trả về một chuỗi trống. Ý bạn là đặt
if buf[0]=="\x47":
IndexError: string index out of range
1 của bạn vào trong
if buf[0]=="\x47":
IndexError: string index out of range
2? 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

  1. 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

if buf[0]=="\x47":
IndexError: string index out of range
0 của loại
if buf[0]=="\x47":
IndexError: string index out of range
4. Lệnh
if buf[0]=="\x47":
IndexError: string index out of range
5 đưa ra:


  1. if buf[0]=="\x47":
    IndexError: string index out of range
    
    6 -> Đọc ở hầu hết các byte kích thước, được trả về dưới dạng chuỗi.

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

10,9k7 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

if buf[0]=="\x47":
IndexError: string index out of range
0 chỉ cần trả về một chuỗi trống. Ý bạn là đặt
if buf[0]=="\x47":
IndexError: string index out of range
1 của bạn vào trong
if buf[0]=="\x47":
IndexError: string index out of range
2? 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

if buf[0]=="\x47":
IndexError: string index out of range
0 của loại
if buf[0]=="\x47":
IndexError: string index out of range
4. Lệnh
if buf[0]=="\x47":
IndexError: string index out of range
5 đưa ra:Mar 1, 2021 at 19:55

if buf[0]=="\x47":
IndexError: string index out of range
6 -> Đọc ở hầu hết các byte kích thước, được trả về dưới dạng chuỗi.SkZ

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.3 silver badges6 bronze badges



Sự mô tả

Phương thức tệp python đọc () đọc ở hầu hết các byte kích thước từ tệp. Nếu đọc đạt EOF trước khi có được kích thước byte, thì nó chỉ đọc byte có sẵn.read() reads at most size bytes from the file. If the read hits EOF before obtaining size bytes, then it reads only available bytes.

Cú pháp

Sau đây là Syntax cho phương thức Read () -read() method −

fileObject.read( size );

Thông số

  • Kích thước - Đây là số byte được đọc từ tệp. − This is the number of bytes to be read from the file.

Giá trị trả về

Phương thức này trả về các byte đọc trong chuỗi.

Thí dụ

Ví dụ sau đây cho thấy cách sử dụng phương thức read ().

This is 1st line
This is 2nd line
This is 3rd line
This is 4th line
This is 5th line
#!/usr/bin/python

# Open a file
fo = open("foo.txt", "rw+")
print "Name of the file: ", fo.name

# Assuming file has following 5 lines
# This is 1st line
# This is 2nd line
# This is 3rd line
# This is 4th line
# This is 5th line

line = fo.read(10)
print "Read Line: %s" % (line)

# Close opend file
fo.close()

Khi chúng tôi chạy trên chương trình, nó tạo ra kết quả sau -

Name of the file:  foo.txt
Read Line: Python is 

python_files_io.htm

Đọc () trả về một chuỗi python?

Đọc () trên các đối tượng IO thường trả về một chuỗi hoặc một đối tượng byte (đối tượng Unicode hoặc STR trong Python 2), tùy thuộc vào việc bạn đã đọc dữ liệu được mã hóa hay thô.usually returns a string or a bytes object (unicode or str object in Python 2), depending on whether you read encoded or raw data.

Hàm đọc () làm gì?

Hàm đọc () đọc dữ liệu được ghi trước đó vào một tệp.Nếu bất kỳ phần nào của tệp thông thường trước khi kết thúc tệp chưa được ghi, hãy đọc () sẽ trả về byte với giá trị 0. Ví dụ: LSEEK () cho phép tệp bù được đặt ngoài phần cuối của dữ liệu hiện có trongtập tin.reads data previously written to a file. If any portion of a regular file prior to the end-of-file has not been written, read() shall return bytes with value 0. For example, lseek() allows the file offset to be set beyond the end of existing data in the file.

Stream đã đọc () trở lại trong Python là gì?

Đối tượng luồng tệp.Mỗi cuộc gọi liên tiếp để đọc trả về dòng tiếp theo trong tệp.Vì vậy, một đối tượng giống như tệp duy trì theo dõi trạng thái trong đó nó nằm trong tệp.Sau khi bit dữ liệu cuối cùng được đọc, mỗi cuộc gọi liên tiếp để đọc trả về chuỗi trống.the next line in the file. So a file-like-object maintains a state tracking where it is in the file. After the last bit of data is read, each successive call to readine returns the empty string.

Loại nào đọc trở lại?

Phương thức Read () của các lớp luồng đầu vào đọc nội dung của byte tệp đã cho bằng byte và trả về giá trị ASCII của byte đọc ở dạng số nguyên.Trong khi đọc tệp nếu nó đến cuối tệp, phương thức này trả về -1.the ASCII value of the read byte in integer form. While reading the file if it reaches the end of the file this method returns -1.