Hướng dẫn how do you input stream in python? - làm thế nào để bạn nhập dòng trong python?

Tôi xin lỗi nếu đây là một câu hỏi lặp lại. Làm cách nào để viết tập lệnh Python để xử lý dữ liệu dưới dạng dòng của dòng? Tôi cần phải làm điều này bởi vì các tệp mà tôi đang xử lý là rất lớn và tôi không muốn đọc tệp vào bộ nhớ.

Tôi biết rằng bạn có khả năng có thể đọc một dòng của tệp tại một thời điểm, nhưng tôi muốn một cái gì đó sẽ xử lý luồng văn bản.

Hướng dẫn how do you input stream in python? - làm thế nào để bạn nhập dòng trong python?

Glen Selle

3.9474 Huy hiệu vàng36 Huy hiệu bạc59 Huy hiệu Đồng4 gold badges36 silver badges59 bronze badges

hỏi ngày 11 tháng 3 năm 2011 lúc 12:33Mar 11, 2011 at 12:33

2

Bạn chỉ có thể đọc dữ liệu từ

cat file.txt | python script.py
7, như được mô tả trong câu trả lời này. Điều này sẽ giống như trong mã:

for line in sys.stdin:
    # do suff

Nếu bạn muốn xử lý một tệp, thì chỉ cần gọi tập lệnh như thế này (trên nền tảng Unix):

cat file.txt | python script.py

Tất nhiên bạn cũng có thể tạo ra đầu ra của bất kỳ chương trình nào khác trong đó.

Đã trả lời ngày 11 tháng 3 năm 2011 lúc 12:45Mar 11, 2011 at 12:45

Bjorn Pollexbjorn PollexBjörn Pollex

73.7K28 Huy hiệu vàng193 Huy hiệu bạc278 Huy hiệu đồng28 gold badges193 silver badges278 bronze badges

Trường hợp của bạn nghe có vẻ chính xác những gì mô -đun FileInput được thiết kế cho. Theo cách đó bạn có thể làm:

python script.py file1.txt file2.txt file3.txt file4.txt

và trong

cat file.txt | python script.py
8

import fileinput
for line in fileinput.input():
    # do stuff here

Phần thưởng được thêm vào khi sử dụng FileInput là bạn có thể thực hiện cùng một điều không gian Space_C0WB0Y được đề xuất thêm một dấu gạch ngang làm tham số đầu tiên:

python script.py - < file.txt

hoặc

cat file.txt | python script.py -

FileInput được đề cập trong các câu trả lời cho câu hỏi được liên kết bởi Space_C0WB0Y, tôi chỉ hình dung tôi sẽ đánh vần cách nó có thể được tận dụng.

Đã trả lời ngày 11 tháng 3 năm 2011 lúc 12:57Mar 11, 2011 at 12:57

ig0774ig0774ig0774

38.1k3 Huy hiệu vàng54 Huy hiệu bạc56 Huy hiệu Đồng3 gold badges54 silver badges56 bronze badges

f = open('somefile.txt')
for line in f:
    process(line)

Trên thực tế,

cat file.txt | python script.py
9 có thể là bất cứ điều gì có thể hiểu được, vì vậy ví dụ như một danh sách các chuỗi hoặc thậm chí
python script.py file1.txt file2.txt file3.txt file4.txt
0 nếu bạn muốn đọc từ đầu vào tiêu chuẩn.

Đã trả lời ngày 11 tháng 3 năm 2011 lúc 12:40Mar 11, 2011 at 12:40

Adam Batkinadam BatkinAdam Batkin

50,5k8 Huy hiệu vàng125 Huy hiệu bạc114 Huy hiệu đồng8 gold badges125 silver badges114 bronze badges

2

Các luồng nhị phân: InputStream và OutputStream

InputStream là chất tương tự của người đọc; OutputStream là chất tương tự của nhà văn. Phương pháp của họ được liệt kê ở đây.

InputStream:

  • Đọc (byte_seterence) - Đọc một chuỗi byte và trả về các byte thực tế đọc

  • Đọc (Byte_Sequence, Off, Len) - Tương tự như trên nhưng cho phép bạn đặt lát cắt cho chuỗi; Trả về số byte thực tế đọc

  • Đọc () - Đọc một byte dữ liệu từ luồng đầu vào

  • Bỏ qua (n) - Bỏ qua một phần bù nhất định trong tệp

  • đóng () - Đóng luồng

  • Đặt lại () - Di chuyển con trỏ tệp đến vị trí được đánh dấu

  • Mark (ireadlimit) - Đánh dấu con trỏ tệp

  • Có sẵn () - Trả về số byte có sẵn có thể đọc mà không chặn (tương tự như phương thức Sẵn sàng () của lớp Reader))

OutputStream:

  • close()

  • Flush () ...

Mã nguồn: lib/io.py Lib/io.py


Tổng quan¶

Mô -đun

python script.py file1.txt file2.txt file3.txt file4.txt
1 cung cấp các cơ sở chính của Python, để xử lý các loại I/O khác nhau. Có ba loại chính của I/O: Văn bản I/O, nhị phân I/O và I/O thô. Đây là những loại chung và các cửa hàng ủng hộ khác nhau có thể được sử dụng cho mỗi cửa hàng. Một đối tượng cụ thể thuộc về bất kỳ danh mục nào trong số này được gọi là đối tượng tệp. Các thuật ngữ phổ biến khác là đối tượng dòng và tệp giống như tệp.file object. Other common terms are stream and file-like object.

Không phụ thuộc vào danh mục của nó, mỗi đối tượng luồng cụ thể cũng sẽ có các khả năng khác nhau: nó có thể chỉ đọc, chỉ viết hoặc đọc-viết. Nó cũng có thể cho phép truy cập ngẫu nhiên tùy ý (tìm kiếm về phía trước hoặc lùi về bất kỳ vị trí nào) hoặc chỉ truy cập tuần tự (ví dụ trong trường hợp ổ cắm hoặc đường ống).

Tất cả các luồng đều cẩn thận về loại dữ liệu bạn cung cấp cho chúng. Ví dụ, đưa ra một đối tượng

python script.py file1.txt file2.txt file3.txt file4.txt
2 cho phương thức
python script.py file1.txt file2.txt file3.txt file4.txt
3 của luồng nhị phân sẽ tăng
python script.py file1.txt file2.txt file3.txt file4.txt
4. Vì vậy, sẽ cung cấp cho một đối tượng
python script.py file1.txt file2.txt file3.txt file4.txt
5 cho phương thức
python script.py file1.txt file2.txt file3.txt file4.txt
3 của luồng văn bản.

Đã thay đổi trong phiên bản 3.3: Các hoạt động được sử dụng để tăng

python script.py file1.txt file2.txt file3.txt file4.txt
7 hiện đang tăng
python script.py file1.txt file2.txt file3.txt file4.txt
8, vì
python script.py file1.txt file2.txt file3.txt file4.txt
7 hiện là bí danh của
python script.py file1.txt file2.txt file3.txt file4.txt
8.Operations that used to raise
python script.py file1.txt file2.txt file3.txt file4.txt
7 now raise
python script.py file1.txt file2.txt file3.txt file4.txt
8, since
python script.py file1.txt file2.txt file3.txt file4.txt
7 is now an alias of
python script.py file1.txt file2.txt file3.txt file4.txt
8.

Văn bản I/O¶

Văn bản I/O mong đợi và tạo ra các đối tượng

python script.py file1.txt file2.txt file3.txt file4.txt
2. Điều này có nghĩa là bất cứ khi nào cửa hàng sao lưu được làm bằng các byte (chẳng hạn như trong trường hợp tệp), mã hóa và giải mã dữ liệu được thực hiện trong suốt cũng như dịch tùy chọn của các ký tự mới dành riêng cho nền tảng.

Cách dễ nhất để tạo luồng văn bản là với

import fileinput
for line in fileinput.input():
    # do stuff here
2, tùy chọn chỉ định mã hóa:

f = open("myfile.txt", "r", encoding="utf-8")

Các luồng văn bản trong bộ nhớ cũng có sẵn dưới dạng đối tượng

import fileinput
for line in fileinput.input():
    # do stuff here
3:

f = io.StringIO("some initial text data")

API luồng văn bản được mô tả chi tiết trong tài liệu của

import fileinput
for line in fileinput.input():
    # do stuff here
4.

Nhị phân i/o¶

I/O nhị phân (còn được gọi là I/O được đệm) mong đợi các đối tượng giống như byte và tạo ra các đối tượng

python script.py file1.txt file2.txt file3.txt file4.txt
5. Không có mã hóa, giải mã hoặc dịch Newline được thực hiện. Loại luồng này có thể được sử dụng cho tất cả các loại dữ liệu không phải là văn bản và cũng khi điều khiển thủ công việc xử lý dữ liệu văn bản là mong muốn.bytes-like objects and produces
python script.py file1.txt file2.txt file3.txt file4.txt
5 objects. No encoding, decoding, or newline translation is performed. This category of streams can be used for all kinds of non-text data, and also when manual control over the handling of text data is desired.

Cách dễ nhất để tạo luồng nhị phân là với

import fileinput
for line in fileinput.input():
    # do stuff here
2 với
import fileinput
for line in fileinput.input():
    # do stuff here
7 trong chuỗi chế độ:

f = open("myfile.jpg", "rb")

Các luồng nhị phân trong bộ nhớ cũng có sẵn dưới dạng đối tượng

import fileinput
for line in fileinput.input():
    # do stuff here
8:

cat file.txt | python script.py
0

API luồng nhị phân được mô tả chi tiết trong các tài liệu của

import fileinput
for line in fileinput.input():
    # do stuff here
9.

Các mô -đun thư viện khác có thể cung cấp các cách bổ sung để tạo các luồng văn bản hoặc nhị phân. Xem

python script.py - < file.txt
0 ví dụ.

RAW I/O¶

I/O RAW (còn được gọi là I/O không bị ảnh hưởng) thường được sử dụng như một khối xây dựng cấp thấp cho các luồng nhị phân và văn bản; Hiếm khi điều khiển trực tiếp một luồng thô từ mã người dùng. Tuy nhiên, bạn có thể tạo một luồng thô bằng cách mở một tệp ở chế độ nhị phân với bộ đệm bị vô hiệu hóa:

cat file.txt | python script.py
1

API luồng thô được mô tả chi tiết trong các tài liệu của

python script.py - < file.txt
1.

Mã hóa văn bản

Mã hóa mặc định của

python script.py - < file.txt
2 và
import fileinput
for line in fileinput.input():
    # do stuff here
2 là cụ thể của Locale (
python script.py - < file.txt
4).

Tuy nhiên, nhiều nhà phát triển quên chỉ định mã hóa khi mở các tệp văn bản được mã hóa trong UTF-8 (ví dụ: JSON, Toml, Markdown, v.v.) vì hầu hết các nền tảng UNIX đều sử dụng Locale UTF-8 theo mặc định. Điều này gây ra lỗi vì mã hóa ngôn ngữ không phải là UTF-8 đối với hầu hết người dùng Windows. Ví dụ:

cat file.txt | python script.py
2

Theo đó, bạn rất khuyến khích bạn chỉ định mã hóa rõ ràng khi mở tệp văn bản. Nếu bạn muốn sử dụng UTF-8, hãy vượt qua

python script.py - < file.txt
5. Để sử dụng mã hóa ngôn ngữ hiện tại,
python script.py - < file.txt
6 được hỗ trợ kể từ Python 3.10.

Chọn tham gia mã hóaWarning¶

Mới trong phiên bản 3.10: Xem PEP 597 để biết thêm chi tiết.See PEP 597 for more details.

Để tìm nơi sử dụng mã hóa ngôn ngữ mặc định, bạn có thể bật tùy chọn dòng lệnh

python script.py - < file.txt
7 hoặc đặt biến môi trường
python script.py - < file.txt
8, sẽ phát ra
python script.py - < file.txt
9 khi sử dụng mã hóa mặc định.
python script.py - < file.txt
8 environment variable, which will emit an
python script.py - < file.txt
9 when the default encoding is used.

Nếu bạn đang cung cấp API sử dụng

import fileinput
for line in fileinput.input():
    # do stuff here
2 hoặc
python script.py - < file.txt
2 và truyền
cat file.txt | python script.py -
2 làm tham số, bạn có thể sử dụng
cat file.txt | python script.py -
3 để người gọi API sẽ phát ra
python script.py - < file.txt
9 nếu họ không vượt qua
cat file.txt | python script.py -
5. Tuy nhiên, vui lòng xem xét sử dụng UTF-8 theo mặc định (nghĩa là
python script.py - < file.txt
5) cho API mới.

Giao diện mô-đun cấp cao

io.default_buffer_size¶DEFAULT_BUFFER_SIZE

Một INT chứa kích thước bộ đệm mặc định được sử dụng bởi các lớp I/O được bộ đệm mô -đun.

import fileinput
for line in fileinput.input():
    # do stuff here
2 sử dụng tệp blksize tệp (như thu được bởi
cat file.txt | python script.py -
8) nếu có thể.

io.open (file, mode = 'r', buffering = -1, mã hóa = none, error = none, newLine = noneopen(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Đây là một bí danh cho chức năng

import fileinput
for line in fileinput.input():
    # do stuff here
2 tích hợp.

Hàm này làm tăng một sự kiện kiểm toán

f = open('somefile.txt')
for line in f:
    process(line)
0 với các đối số
f = open('somefile.txt')
for line in f:
    process(line)
1,
f = open('somefile.txt')
for line in f:
    process(line)
2 và
f = open('somefile.txt')
for line in f:
    process(line)
3. Các đối số
f = open('somefile.txt')
for line in f:
    process(line)
2 và
f = open('somefile.txt')
for line in f:
    process(line)
3 có thể đã được sửa đổi hoặc suy ra từ cuộc gọi ban đầu.auditing event
f = open('somefile.txt')
for line in f:
    process(line)
0 with arguments
f = open('somefile.txt')
for line in f:
    process(line)
1,
f = open('somefile.txt')
for line in f:
    process(line)
2 and
f = open('somefile.txt')
for line in f:
    process(line)
3. The
f = open('somefile.txt')
for line in f:
    process(line)
2 and
f = open('somefile.txt')
for line in f:
    process(line)
3 arguments may have been modified or inferred from the original call.

io.open_code (đường dẫn) ¶open_code(path)

Mở tệp được cung cấp với chế độ

f = open('somefile.txt')
for line in f:
    process(line)
6. Hàm này nên được sử dụng khi ý định là coi nội dung là mã thực thi.

f = open('somefile.txt')
for line in f:
    process(line)
1 phải là một
python script.py file1.txt file2.txt file3.txt file4.txt
2 và một con đường tuyệt đối.

Hành vi của chức năng này có thể bị ghi đè bởi một cuộc gọi trước đó đến

f = open('somefile.txt')
for line in f:
    process(line)
9. Tuy nhiên, giả sử rằng
f = open('somefile.txt')
for line in f:
    process(line)
1 là
python script.py file1.txt file2.txt file3.txt file4.txt
2 và một con đường tuyệt đối,
f = open("myfile.txt", "r", encoding="utf-8")
2 phải luôn hoạt động giống như
f = open("myfile.txt", "r", encoding="utf-8")
3. Ghi đè hành vi được dự định để xác thực bổ sung hoặc tiền xử lý tệp.

Mới trong phiên bản 3.8.

io.text_encoding (mã hóa, stacklevel = 2, /) ¶text_encoding(encoding, stacklevel=2, /)

Đây là hàm trợ giúp cho các vật phẩm gọi sử dụng

import fileinput
for line in fileinput.input():
    # do stuff here
2 hoặc
python script.py - < file.txt
2 và có tham số
cat file.txt | python script.py -
2.

Hàm này trả về mã hóa nếu nó không phải là

f = open("myfile.txt", "r", encoding="utf-8")
7. Mặt khác, nó trả về
f = open("myfile.txt", "r", encoding="utf-8")
8 hoặc
f = open("myfile.txt", "r", encoding="utf-8")
9 tùy thuộc vào chế độ UTF-8.UTF-8 Mode.

Hàm này phát ra một

python script.py - < file.txt
9 nếu
f = io.StringIO("some initial text data")
1 là đúng và mã hóa là
f = open("myfile.txt", "r", encoding="utf-8")
7. Stacklevel chỉ định nơi cảnh báo được phát ra. Ví dụ:

cat file.txt | python script.py
3

Trong ví dụ này, một

python script.py - < file.txt
9 được phát ra cho người gọi
f = io.StringIO("some initial text data")
4.

Xem mã hóa văn bản để biết thêm thông tin.Text Encoding for more information.

Mới trong phiên bản 3.10.

Đã thay đổi trong phiên bản 3.11:

cat file.txt | python script.py -
3 trả về UTF-8, khi chế độ UTF-8 được bật và mã hóa là
f = open("myfile.txt", "r", encoding="utf-8")
7.
cat file.txt | python script.py -
3 returns “utf-8” when UTF-8 mode is enabled and encoding is
f = open("myfile.txt", "r", encoding="utf-8")
7.

ngoại lệ.blockingioerror¶io.BlockingIOError

Đây là một bí danh tương thích cho ngoại lệ

f = io.StringIO("some initial text data")
7 tích hợp.

ngoại lệ.io.UnsupportedOperation

Một ngoại lệ kế thừa

python script.py file1.txt file2.txt file3.txt file4.txt
8 và
f = io.StringIO("some initial text data")
9 được nâng lên khi một hoạt động không được hỗ trợ được gọi trên một luồng.

Phân cấp lớp

Việc thực hiện các luồng I/O được tổ chức như một hệ thống phân cấp của các lớp. Các lớp cơ sở trừu tượng đầu tiên (ABC), được sử dụng để chỉ định các loại luồng khác nhau, sau đó các lớp cụ thể cung cấp các triển khai luồng tiêu chuẩn.abstract base classes (ABCs), which are used to specify the various categories of streams, then concrete classes providing the standard stream implementations.

Ghi chú

Các lớp cơ sở trừu tượng cũng cung cấp các triển khai mặc định của một số phương thức để giúp thực hiện các lớp luồng cụ thể. Ví dụ,

import fileinput
for line in fileinput.input():
    # do stuff here
9 cung cấp các triển khai chưa được tối ưu hóa của
f = open("myfile.jpg", "rb")
1 và
f = open("myfile.jpg", "rb")
2.

Ở đầu phân cấp I/O là lớp cơ sở trừu tượng

f = open("myfile.jpg", "rb")
3. Nó xác định giao diện cơ bản cho một luồng. Tuy nhiên, lưu ý rằng không có sự tách biệt giữa đọc và ghi vào các luồng; Việc triển khai được phép tăng
f = open("myfile.jpg", "rb")
4 nếu họ không hỗ trợ một hoạt động nhất định.

python script.py - < file.txt
1 ABC mở rộng
f = open("myfile.jpg", "rb")
3. Nó liên quan đến việc đọc và viết byte cho một luồng.
f = open("myfile.jpg", "rb")
7 Các lớp con
python script.py - < file.txt
1 để cung cấp giao diện cho các tệp trong hệ thống tệp máy.

import fileinput
for line in fileinput.input():
    # do stuff here
9 ABC mở rộng
f = open("myfile.jpg", "rb")
3. Nó liên quan đến bộ đệm trên một luồng nhị phân thô (
python script.py - < file.txt
1). Các lớp con của nó,
cat file.txt | python script.py
02,
cat file.txt | python script.py
03 và
cat file.txt | python script.py
04 Các luồng nhị phân thô có thể ghi, có thể đọc được và có thể đọc được và có thể ghi, tương ứng.
cat file.txt | python script.py
05 cung cấp một giao diện được đệm để tìm kiếm các luồng có thể tìm kiếm. Một lớp con
import fileinput
for line in fileinput.input():
    # do stuff here
9 khác,
import fileinput
for line in fileinput.input():
    # do stuff here
8, là một dòng các byte trong bộ nhớ.

import fileinput
for line in fileinput.input():
    # do stuff here
4 ABC mở rộng
f = open("myfile.jpg", "rb")
3. Nó liên quan đến các luồng có byte đại diện cho văn bản và xử lý mã hóa và giải mã đến và từ các chuỗi.
python script.py - < file.txt
2, mở rộng
import fileinput
for line in fileinput.input():
    # do stuff here
4, là giao diện văn bản được đệm cho luồng thô được đệm (
import fileinput
for line in fileinput.input():
    # do stuff here
9). Cuối cùng,
import fileinput
for line in fileinput.input():
    # do stuff here
3 là một luồng trong bộ nhớ cho văn bản.

Tên đối số không phải là một phần của đặc điểm kỹ thuật và chỉ các đối số của

import fileinput
for line in fileinput.input():
    # do stuff here
2 được dự định sẽ được sử dụng làm đối số từ khóa.

Bảng sau đây tóm tắt các ABC được cung cấp bởi mô -đun

python script.py file1.txt file2.txt file3.txt file4.txt
1:

ABC

Kế thừa

Phương pháp sơ khai

Phương pháp và tính chất mixin

f = open("myfile.jpg", "rb")
3

cat file.txt | python script.py
17,
cat file.txt | python script.py
18 và
cat file.txt | python script.py
19

cat file.txt | python script.py
20,
cat file.txt | python script.py
21,
cat file.txt | python script.py
22,
cat file.txt | python script.py
23,
cat file.txt | python script.py
24,
cat file.txt | python script.py
25,
cat file.txt | python script.py
26,
cat file.txt | python script.py
27,
cat file.txt | python script.py
28,
cat file.txt | python script.py
29,
cat file.txt | python script.py
30

python script.py - < file.txt
1

f = open("myfile.jpg", "rb")
3

cat file.txt | python script.py
37 và
cat file.txt | python script.py
38

Các phương pháp

f = open("myfile.jpg", "rb")
3 được kế thừa,
cat file.txt | python script.py
40 và
cat file.txt | python script.py
41

import fileinput
for line in fileinput.input():
    # do stuff here
9

f = open("myfile.jpg", "rb")
3

cat file.txt | python script.py
44,
cat file.txt | python script.py
40,
cat file.txt | python script.py
46 và
cat file.txt | python script.py
38

Phương pháp

f = open("myfile.jpg", "rb")
3 được thừa hưởng,
cat file.txt | python script.py
37 và
cat file.txt | python script.py
50

import fileinput
for line in fileinput.input():
    # do stuff here
4

f = open("myfile.jpg", "rb")
3

cat file.txt | python script.py
44,
cat file.txt | python script.py
40,
cat file.txt | python script.py
29 và
cat file.txt | python script.py
38

Phương pháp thừa kế

f = open("myfile.jpg", "rb")
3,
cat file.txt | python script.py -
5,
cat file.txt | python script.py
59 và
cat file.txt | python script.py
60

I/o Các lớp cơ sở

classio.iobase¶io.IOBase

Lớp cơ sở trừu tượng cho tất cả các lớp I/O.

Lớp này cung cấp các triển khai trừu tượng trống cho nhiều phương pháp mà các lớp dẫn xuất có thể ghi đè có chọn lọc; Các triển khai mặc định đại diện cho một tệp không thể đọc, viết hoặc tìm kiếm.

Mặc dù

f = open("myfile.jpg", "rb")
3 không khai báo
cat file.txt | python script.py
62 hoặc
python script.py file1.txt file2.txt file3.txt file4.txt
3 vì chữ ký của họ sẽ khác nhau, việc triển khai và khách hàng nên xem xét các phương thức đó một phần của giao diện. Ngoài ra, việc triển khai có thể tăng
f = io.StringIO("some initial text data")
9 (hoặc
f = open("myfile.jpg", "rb")
4) khi các hoạt động mà họ không hỗ trợ được gọi.

Loại cơ bản được sử dụng cho dữ liệu nhị phân được đọc từ hoặc ghi vào tệp là

python script.py file1.txt file2.txt file3.txt file4.txt
5. Các đối tượng giống như byte khác cũng được chấp nhận làm đối số phương thức. Các lớp I/O văn bản hoạt động với dữ liệu
python script.py file1.txt file2.txt file3.txt file4.txt
2.bytes-like objects are accepted as method arguments too. Text I/O classes work with
python script.py file1.txt file2.txt file3.txt file4.txt
2 data.

Lưu ý rằng việc gọi bất kỳ phương thức nào (thậm chí yêu cầu) trên luồng đóng không được xác định. Việc triển khai có thể tăng

f = io.StringIO("some initial text data")
9 trong trường hợp này.

f = open("myfile.jpg", "rb")
3 (và các lớp con của nó) hỗ trợ giao thức tererator, có nghĩa là một đối tượng
f = open("myfile.jpg", "rb")
3 có thể được lặp lại trong việc tạo ra các dòng trong một luồng. Các dòng được xác định hơi khác nhau tùy thuộc vào việc luồng là luồng nhị phân (mang lại byte) hay luồng văn bản (chuỗi ký tự tạo ra). Xem
f = open("myfile.jpg", "rb")
2 dưới đây.

f = open("myfile.jpg", "rb")
3 cũng là người quản lý bối cảnh và do đó hỗ trợ tuyên bố
cat file.txt | python script.py
73. Trong ví dụ này, tệp được đóng sau khi bộ câu lệnh
cat file.txt | python script.py
73 đã hoàn thành, ngay cả khi một ngoại lệ xảy ra:

cat file.txt | python script.py
4

f = open("myfile.jpg", "rb")
3 cung cấp các thuộc tính và phương thức dữ liệu này:

gần()¶()

Xóa và đóng luồng này. Phương pháp này không có tác dụng nếu tệp đã được đóng. Khi tệp được đóng, mọi hoạt động trên tệp (ví dụ: đọc hoặc ghi) sẽ tăng

f = io.StringIO("some initial text data")
9.

Để thuận tiện, nó được phép gọi phương thức này nhiều lần; Tuy nhiên, chỉ có cuộc gọi đầu tiên sẽ có hiệu lực.

đóng cửa

cat file.txt | python script.py
77 Nếu luồng được đóng lại.

thư mục số()¶()

Trả về bộ mô tả tệp cơ bản (một số nguyên) của luồng nếu nó tồn tại. Một

python script.py file1.txt file2.txt file3.txt file4.txt
8 được nâng lên nếu đối tượng IO không sử dụng bộ mô tả tệp.

tuôn ra()¶()

Xóa các bộ đệm ghi của luồng nếu có. Điều này không có gì cho các luồng chỉ đọc và không chặn.

isatty ()()

Trả về

cat file.txt | python script.py
77 nếu luồng tương tác (nghĩa là, được kết nối với thiết bị đầu cuối/tty).

có thể đọc được () ¶()

Trả về

cat file.txt | python script.py
77 nếu luồng có thể được đọc từ. Nếu
cat file.txt | python script.py
81,
cat file.txt | python script.py
62 sẽ tăng
python script.py file1.txt file2.txt file3.txt file4.txt
8.

READLINE (size = -1, /) ¶(size=- 1, /)

Đọc và trả về một dòng từ luồng. Nếu kích thước được chỉ định, ở hầu hết các byte kích thước sẽ được đọc.

Bộ kết thúc dòng luôn là

cat file.txt | python script.py
84 cho các tệp nhị phân; Đối với các tệp văn bản, đối số mới có thể được sử dụng để chọn (các) đối số dòng được nhận dạng.

Đo đọc (Gợi ý = -1, /) ¶(hint=- 1, /)

Đọc và trả lại một danh sách các dòng từ luồng. Gợi ý có thể được chỉ định để kiểm soát số lượng dòng đọc: sẽ không đọc thêm dòng nếu tổng kích thước (tính bằng byte/ký tự) của tất cả các dòng cho đến nay vượt quá gợi ý.

Giá trị gợi ý của

cat file.txt | python script.py
86 hoặc ít hơn, cũng như
f = open("myfile.txt", "r", encoding="utf-8")
7, được coi là không có gợi ý.

Lưu ý rằng nó đã có thể lặp lại trên các đối tượng tệp bằng cách sử dụng

cat file.txt | python script.py
88 mà không gọi
cat file.txt | python script.py
89.

Seek (offset, whence = seek_set, /) ¶(offset, whence=SEEK_SET, /)

Thay đổi vị trí luồng thành phần bù byte đã cho. Offset được giải thích liên quan đến vị trí được chỉ định bởi WHENCE. Giá trị mặc định cho quá trình là

cat file.txt | python script.py
90. Giá trị cho từ đâu là:

  • cat file.txt | python script.py
    
    90 hoặc
    cat file.txt | python script.py
    
    86 - Bắt đầu luồng (mặc định); Offset phải bằng không hoặc dương

  • cat file.txt | python script.py
    
    93 hoặc
    cat file.txt | python script.py
    
    94 - Vị trí luồng hiện tại; Offset có thể là âm

  • cat file.txt | python script.py
    
    95 hoặc
    cat file.txt | python script.py
    
    96 - kết thúc luồng; Offset thường là âm

Trả lại vị trí tuyệt đối mới.

Mới trong phiên bản 3.1: Hằng số

cat file.txt | python script.py
97.The
cat file.txt | python script.py
97 constants.

Mới trong phiên bản 3.3: Một số hệ điều hành có thể hỗ trợ các giá trị bổ sung, như

cat file.txt | python script.py
98 hoặc
cat file.txt | python script.py
99. Các giá trị hợp lệ cho một tệp có thể phụ thuộc vào nó được mở ở chế độ văn bản hoặc nhị phân.Some operating systems could support additional values, like
cat file.txt | python script.py
98 or
cat file.txt | python script.py
99. The valid values for a file could depend on it being open in text or binary mode.

Seekable () ¶()

Trả về

cat file.txt | python script.py
77 Nếu luồng hỗ trợ truy cập ngẫu nhiên. Nếu
cat file.txt | python script.py
81,
python script.py file1.txt file2.txt file3.txt file4.txt
02,
python script.py file1.txt file2.txt file3.txt file4.txt
03 và
python script.py file1.txt file2.txt file3.txt file4.txt
04 sẽ tăng
python script.py file1.txt file2.txt file3.txt file4.txt
8.

kể()¶()

Trả về vị trí luồng hiện tại.

cắt ngắn (size = none, /) ¶(size=None, /)

Thay đổi kích thước luồng thành kích thước đã cho tính bằng byte (hoặc vị trí hiện tại nếu kích thước không được chỉ định). Vị trí luồng hiện tại không phải là thay đổi. Thay đổi kích thước này có thể mở rộng hoặc giảm kích thước tệp hiện tại. Trong trường hợp mở rộng, nội dung của khu vực tệp mới phụ thuộc vào nền tảng (trên hầu hết các hệ thống, các byte bổ sung là không chứa). Kích thước tệp mới được trả về.

Đã thay đổi trong phiên bản 3.5: Windows giờ sẽ điền vào các tệp khi mở rộng.Windows will now zero-fill files when extending.

writable () ¶()

Trả về

cat file.txt | python script.py
77 Nếu luồng hỗ trợ viết. Nếu
cat file.txt | python script.py
81,
python script.py file1.txt file2.txt file3.txt file4.txt
3 và
python script.py file1.txt file2.txt file3.txt file4.txt
04 sẽ tăng
python script.py file1.txt file2.txt file3.txt file4.txt
8.

writeLines (dòng, /) ¶(lines, /)

Viết một danh sách các dòng vào luồng. Các phân tách dòng không được thêm vào, vì vậy thông thường cho mỗi dòng được cung cấp để có một dải phân cách dòng ở cuối.

__del __ ()()

Chuẩn bị cho sự phá hủy đối tượng.

f = open("myfile.jpg", "rb")
3 cung cấp một triển khai mặc định của phương thức này gọi phương thức phiên bản ____ ____212.

classio.rawiobase¶io.RawIOBase

Lớp cơ sở cho các luồng nhị phân thô. Nó kế thừa

f = open("myfile.jpg", "rb")
3.

Các luồng nhị phân thô thường cung cấp quyền truy cập cấp thấp vào thiết bị HĐH hoặc API cơ bản và không cố gắng gói gọn nó trong các nguyên thủy cấp cao (chức năng này được thực hiện ở cấp độ cao hơn trong các luồng nhị phân được đệm và các luồng văn bản, được mô tả sau trong trang này).

python script.py - < file.txt
1 cung cấp các phương pháp này ngoài các phương pháp từ
f = open("myfile.jpg", "rb")
3:

Đọc (size = -1, /) ¶(size=- 1, /)

Đọc lên đến kích thước byte từ đối tượng và trả lại chúng. Để thuận tiện, nếu kích thước không xác định hoặc -1, tất cả các byte cho đến khi EOF được trả về. Nếu không, chỉ có một cuộc gọi hệ thống được thực hiện. Ít hơn kích thước byte có thể được trả về nếu cuộc gọi hệ điều hành trả về ít hơn kích thước byte.

Nếu 0 byte được trả về và kích thước không phải là 0, điều này chỉ ra kết thúc của tệp. Nếu đối tượng ở chế độ không chặn và không có byte,

f = open("myfile.txt", "r", encoding="utf-8")
7 sẽ được trả về.

Việc triển khai mặc định bảo vệ

python script.py file1.txt file2.txt file3.txt file4.txt
17 và
f = open("myfile.jpg", "rb")
1.

đọc hết()¶()

Đọc và trả về tất cả các byte từ luồng cho đến khi EOF, sử dụng nhiều cuộc gọi vào luồng nếu cần thiết.

ReadInto (B, /) ¶(b, /)

Đọc các byte thành một đối tượng b byte có thể ghi trước, có thể ghi được và trả về số byte đọc. Ví dụ, B có thể là

python script.py file1.txt file2.txt file3.txt file4.txt
19. Nếu đối tượng ở chế độ không chặn và không có byte,
f = open("myfile.txt", "r", encoding="utf-8")
7 sẽ được trả về.bytes-like object b, and return the number of bytes read. For example, b might be a
python script.py file1.txt file2.txt file3.txt file4.txt
19. If the object is in non-blocking mode and no bytes are available,
f = open("myfile.txt", "r", encoding="utf-8")
7 is returned.

viết (b, /) ¶(b, /)

Viết đối tượng giống như byte đã cho, B, vào luồng thô cơ bản và trả về số byte được viết. Điều này có thể nhỏ hơn độ dài của B trong byte, tùy thuộc vào các chi tiết cụ thể của luồng thô cơ bản và đặc biệt nếu nó ở chế độ không chặn.

f = open("myfile.txt", "r", encoding="utf-8")
7 được trả về nếu luồng thô được đặt không bị chặn và không có byte nào có thể dễ dàng ghi vào nó. Người gọi có thể phát hành hoặc đột biến B sau khi phương thức này trả về, do đó việc triển khai chỉ nên truy cập B trong cuộc gọi phương thức.bytes-like object, b, to the underlying raw stream, and return the number of bytes written. This can be less than the length of b in bytes, depending on specifics of the underlying raw stream, and especially if it is in non-blocking mode.
f = open("myfile.txt", "r", encoding="utf-8")
7 is returned if the raw stream is set not to block and no single byte could be readily written to it. The caller may release or mutate b after this method returns, so the implementation should only access b during the method call.

classio.bufferediobase¶ io.BufferedIOBase

Lớp cơ sở cho các luồng nhị phân hỗ trợ một số loại đệm. Nó kế thừa

f = open("myfile.jpg", "rb")
3.

Sự khác biệt chính với

python script.py - < file.txt
1 là các phương thức
cat file.txt | python script.py
62,
f = open("myfile.jpg", "rb")
1 và
python script.py file1.txt file2.txt file3.txt file4.txt
3 sẽ cố gắng (tương ứng) để đọc nhiều đầu vào như được yêu cầu hoặc tiêu thụ tất cả các đầu ra đã cho, với chi phí thực hiện có lẽ nhiều hơn một cuộc gọi hệ thống.

Ngoài ra, các phương pháp đó có thể tăng

f = io.StringIO("some initial text data")
7 nếu luồng thô cơ bản ở chế độ không chặn và không thể lấy hoặc cung cấp đủ dữ liệu; Không giống như các đối tác
python script.py - < file.txt
1 của họ, họ sẽ không bao giờ trả lại
f = open("myfile.txt", "r", encoding="utf-8")
7.

Ngoài ra, phương thức

cat file.txt | python script.py
62 không có triển khai mặc định bảo vệ
f = open("myfile.jpg", "rb")
1.

Một triển khai

import fileinput
for line in fileinput.input():
    # do stuff here
9 điển hình không nên kế thừa từ việc triển khai
python script.py - < file.txt
1, mà là một trong một, như
cat file.txt | python script.py
02 và
cat file.txt | python script.py
03 làm.

import fileinput
for line in fileinput.input():
    # do stuff here
9 cung cấp hoặc ghi đè các thuộc tính và phương thức dữ liệu này ngoài các thuộc tính từ
f = open("myfile.jpg", "rb")
3:

thuộc về rang;

Luồng thô cơ bản (một ví dụ

python script.py - < file.txt
1) mà
import fileinput
for line in fileinput.input():
    # do stuff here
9 liên quan đến. Đây không phải là một phần của API
import fileinput
for line in fileinput.input():
    # do stuff here
9 và có thể không tồn tại trên một số triển khai.

tách ra () ¶()

Tách luồng thô cơ bản khỏi bộ đệm và trả về nó.

Sau khi dòng thô đã được tách ra, bộ đệm ở trạng thái không thể sử dụng được.

Một số bộ đệm, như

import fileinput
for line in fileinput.input():
    # do stuff here
8, không có khái niệm về một luồng thô để quay lại từ phương pháp này. Họ tăng
f = open("myfile.jpg", "rb")
4.

Mới trong phiên bản 3.1.

Đọc (size = -1, /) ¶(size=- 1, /)

Đọc và trở lại kích thước byte. Nếu đối số bị bỏ qua,

f = open("myfile.txt", "r", encoding="utf-8")
7 hoặc âm, dữ liệu được đọc và trả về cho đến khi đạt được EOF. Một đối tượng
python script.py file1.txt file2.txt file3.txt file4.txt
5 trống được trả về nếu luồng đã ở EOF.

Nếu đối số là tích cực và luồng thô cơ bản không tương tác, nhiều lần đọc thô có thể được phát hành để đáp ứng số lượng byte (trừ khi đạt được EOF trước tiên). Nhưng đối với các luồng thô tương tác, nhiều nhất là một lần đọc thô sẽ được phát hành và một kết quả ngắn không ngụ ý rằng EOF sắp xảy ra.

Một

f = io.StringIO("some initial text data")
7 được tăng lên nếu luồng thô cơ bản ở chế độ không chặn và không có dữ liệu có sẵn tại thời điểm này.

read1 (size = -1, /) ¶(size=- 1, /)

Đọc và trả lại cho các byte kích thước, với nhiều nhất một cuộc gọi đến phương thức RAW RAW Stream

cat file.txt | python script.py
62 (hoặc
f = open("myfile.jpg", "rb")
1) bên dưới. Điều này có thể hữu ích nếu bạn đang thực hiện bộ đệm của riêng mình trên đỉnh của một đối tượng
import fileinput
for line in fileinput.input():
    # do stuff here
9.

Nếu kích thước là

python script.py file1.txt file2.txt file3.txt file4.txt
49 (mặc định), một số byte tùy ý được trả về (nhiều hơn 0 trừ khi đạt được EOF).

ReadInto (B, /) ¶(b, /)

Đọc các byte thành một đối tượng b byte có thể ghi trước, có thể ghi được và trả về số byte đọc. Ví dụ, B có thể là

python script.py file1.txt file2.txt file3.txt file4.txt
19.bytes-like object b and return the number of bytes read. For example, b might be a
python script.py file1.txt file2.txt file3.txt file4.txt
19.

Giống như

cat file.txt | python script.py
62, nhiều lần đọc có thể được phát cho luồng thô cơ bản, trừ khi sau này là tương tác.

Một

f = io.StringIO("some initial text data")
7 được tăng lên nếu luồng thô cơ bản ở chế độ không chặn và không có dữ liệu có sẵn tại thời điểm này.

read1 (size = -1, /) ¶(b, /)

Đọc và trả lại cho các byte kích thước, với nhiều nhất một cuộc gọi đến phương thức RAW RAW Stream

cat file.txt | python script.py
62 (hoặc
f = open("myfile.jpg", "rb")
1) bên dưới. Điều này có thể hữu ích nếu bạn đang thực hiện bộ đệm của riêng mình trên đỉnh của một đối tượng
import fileinput
for line in fileinput.input():
    # do stuff here
9.bytes-like object b, using at most one call to the underlying raw stream’s
cat file.txt | python script.py
62 (or
f = open("myfile.jpg", "rb")
1) method. Return the number of bytes read.

Một

f = io.StringIO("some initial text data")
7 được tăng lên nếu luồng thô cơ bản ở chế độ không chặn và không có dữ liệu có sẵn tại thời điểm này.

read1 (size = -1, /) ¶

Đọc và trả lại cho các byte kích thước, với nhiều nhất một cuộc gọi đến phương thức RAW RAW Stream
cat file.txt | python script.py
62 (hoặc
f = open("myfile.jpg", "rb")
1) bên dưới. Điều này có thể hữu ích nếu bạn đang thực hiện bộ đệm của riêng mình trên đỉnh của một đối tượng
import fileinput
for line in fileinput.input():
    # do stuff here
9.
(b, /)

Nếu kích thước là

python script.py file1.txt file2.txt file3.txt file4.txt
49 (mặc định), một số byte tùy ý được trả về (nhiều hơn 0 trừ khi đạt được EOF).bytes-like object, b, and return the number of bytes written (always equal to the length of b in bytes, since if the write fails an
python script.py file1.txt file2.txt file3.txt file4.txt
8 will be raised). Depending on the actual implementation, these bytes may be readily written to the underlying stream, or held in a buffer for performance and latency reasons.

ReadInto (B, /) ¶

Đọc các byte thành một đối tượng b byte có thể ghi trước, có thể ghi được và trả về số byte đọc. Ví dụ, B có thể là

python script.py file1.txt file2.txt file3.txt file4.txt
19.

Giống như cat file.txt | python script.py 62, nhiều lần đọc có thể được phát cho luồng thô cơ bản, trừ khi sau này là tương tác.

readInto1 (b, /) ¶ io.FileIO(name, mode='r', closefd=True, opener=None)

Đọc các byte thành một đối tượng b byte có thể ghi trước, có thể ghi được, sử dụng nhiều nhất một cuộc gọi đến phương thức RAW Stream RAW

cat file.txt | python script.py
62 (hoặc
f = open("myfile.jpg", "rb")
1) bên dưới. Trả về số byte đọc.

Mới trong phiên bản 3.5.

  • viết (b, /) ¶

  • Viết đối tượng giống như byte đã cho, B và trả về số byte được viết (luôn bằng độ dài của B trong byte, vì nếu ghi không thành công

    python script.py file1.txt file2.txt file3.txt file4.txt
    
    8 sẽ được nâng lên). Tùy thuộc vào việc thực hiện thực tế, các byte này có thể dễ dàng được ghi vào luồng cơ bản hoặc được giữ trong một bộ đệm vì lý do hiệu suất và độ trễ.

Khi ở chế độ không chặn,

f = io.StringIO("some initial text data")
7 được nêu ra nếu dữ liệu cần được ghi vào luồng thô nhưng nó không thể chấp nhận tất cả các dữ liệu mà không chặn.

Người gọi có thể phát hành hoặc đột biến B sau khi phương thức này trả về, do đó việc triển khai chỉ nên truy cập B trong cuộc gọi phương thức.

Tệp thô I/O¶

classio.fileio (name, mode = 'r', Closefd = true, opener = none) ¶non-inheritable.

Một luồng nhị phân thô đại diện cho một tệp cấp hệ điều hành chứa dữ liệu byte. Nó kế thừa

python script.py - < file.txt
1.

Tên có thể là một trong hai điều:The opener parameter was added. The

python script.py file1.txt file2.txt file3.txt file4.txt
65 mode was added.

Đã thay đổi trong phiên bản 3.4: Tệp hiện không bị ảnh hưởng.The file is now non-inheritable.

f = open("myfile.jpg", "rb")
7 cung cấp các thuộc tính dữ liệu này cùng với các thuộc tính từ
python script.py - < file.txt
1 và
f = open("myfile.jpg", "rb")
3:

cách thức¶

Chế độ như được đưa ra trong hàm tạo.

Tên¶

Tên tệp. Đây là bộ mô tả tệp của tệp khi không có tên nào được đưa ra trong hàm tạo.

Các luồng được đệm

Các luồng I/O được đệm cung cấp giao diện cấp cao hơn cho thiết bị I/O so với I/O RAW.

classio.bytesio (init_bytes = b '') ¶ io.BytesIO(initial_bytes=b'')

Một luồng nhị phân sử dụng bộ đệm byte trong bộ nhớ. Nó kế thừa

import fileinput
for line in fileinput.input():
    # do stuff here
9. Bộ đệm bị loại bỏ khi phương pháp
python script.py file1.txt file2.txt file3.txt file4.txt
12 được gọi.

Đối số tùy chọn init_bytes là một đối tượng giống như byte chứa dữ liệu ban đầu.bytes-like object that contains initial data.

import fileinput
for line in fileinput.input():
    # do stuff here
8 cung cấp hoặc ghi đè các phương thức này ngoài các phương pháp từ
import fileinput
for line in fileinput.input():
    # do stuff here
9 và
f = open("myfile.jpg", "rb")
3:

getbuffer () ¶()

Trả về một chế độ xem có thể đọc được và có thể ghi qua nội dung của bộ đệm mà không sao chép chúng. Ngoài ra, đột biến chế độ xem sẽ cập nhật một cách minh bạch các nội dung của bộ đệm:

cat file.txt | python script.py
5

Ghi chú

Miễn là quan điểm tồn tại, đối tượng

import fileinput
for line in fileinput.input():
    # do stuff here
8 không thể được thay đổi kích thước hoặc đóng.

Mới trong phiên bản 3.2.

getValue ()()

Trả về

python script.py file1.txt file2.txt file3.txt file4.txt
5 chứa toàn bộ nội dung của bộ đệm.

read1 (size = -1, /) ¶(size=- 1, /)

Trong

import fileinput
for line in fileinput.input():
    # do stuff here
8, điều này giống như
cat file.txt | python script.py
62.

Đã thay đổi trong phiên bản 3.7: Đối số kích thước hiện là tùy chọn.The size argument is now optional.

readInto1 (b, /) ¶(b, /)

Trong

import fileinput
for line in fileinput.input():
    # do stuff here
8, điều này giống như
f = open("myfile.jpg", "rb")
1.

Mới trong phiên bản 3.5.

Classio.BufferedReader (RAW, BUFFER_SIZE = DEFFLIe_Buffer_Size) ¶io.BufferedReader(raw, buffer_size=DEFAULT_BUFFER_SIZE)

Một luồng nhị phân được đệm cung cấp quyền truy cập cấp cao hơn cho một luồng nhị phân thô có thể đọc được, không thể tìm kiếm. Nó kế thừa

import fileinput
for line in fileinput.input():
    # do stuff here
9.

Khi đọc dữ liệu từ đối tượng này, một lượng dữ liệu lớn hơn có thể được yêu cầu từ luồng thô bên dưới và được giữ trong bộ đệm bên trong. Dữ liệu được đệm sau đó có thể được trả về trực tiếp trên các lần đọc tiếp theo.

Hàm tạo tạo

cat file.txt | python script.py
03 cho luồng thô có thể đọc được và Buffer_Size đã cho. Nếu Buffer_Size bị bỏ qua,
python script.py file1.txt file2.txt file3.txt file4.txt
94 được sử dụng.

cat file.txt | python script.py
03 cung cấp hoặc ghi đè các phương thức này ngoài các phương pháp từ
import fileinput
for line in fileinput.input():
    # do stuff here
9 và
f = open("myfile.jpg", "rb")
3:

peek (size = 0, /) ¶(size=0, /)

Trả lại byte từ luồng mà không cần tiến lên vị trí. Nhiều nhất một lần đọc trên luồng thô được thực hiện để đáp ứng cuộc gọi. Số lượng byte được trả lại có thể ít hơn hoặc nhiều hơn yêu cầu.

Đọc (size = -1, /) ¶(size=- 1, /)

Đọc và trả về các byte, hoặc nếu kích thước không được cung cấp hoặc âm, cho đến khi EOF hoặc nếu cuộc gọi đọc sẽ chặn ở chế độ không chặn.

read1 (size = -1, /) ¶(size=- 1, /)

Trong

import fileinput
for line in fileinput.input():
    # do stuff here
8, điều này giống như
cat file.txt | python script.py
62.

Đã thay đổi trong phiên bản 3.7: Đối số kích thước hiện là tùy chọn.The size argument is now optional.

readInto1 (b, /) ¶io.BufferedWriter(raw, buffer_size=DEFAULT_BUFFER_SIZE)

Trong

import fileinput
for line in fileinput.input():
    # do stuff here
8, điều này giống như
f = open("myfile.jpg", "rb")
1.

Mới trong phiên bản 3.5.

  • Classio.BufferedReader (RAW, BUFFER_SIZE = DEFFLIe_Buffer_Size) ¶

  • Một luồng nhị phân được đệm cung cấp quyền truy cập cấp cao hơn cho một luồng nhị phân thô có thể đọc được, không thể tìm kiếm. Nó kế thừa

    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    9.

  • Khi đọc dữ liệu từ đối tượng này, một lượng dữ liệu lớn hơn có thể được yêu cầu từ luồng thô bên dưới và được giữ trong bộ đệm bên trong. Dữ liệu được đệm sau đó có thể được trả về trực tiếp trên các lần đọc tiếp theo.

  • Hàm tạo tạo

    cat file.txt | python script.py
    
    03 cho luồng thô có thể đọc được và Buffer_Size đã cho. Nếu Buffer_Size bị bỏ qua,
    python script.py file1.txt file2.txt file3.txt file4.txt
    
    94 được sử dụng.

cat file.txt | python script.py
03 cung cấp hoặc ghi đè các phương thức này ngoài các phương pháp từ
import fileinput
for line in fileinput.input():
    # do stuff here
9 và
f = open("myfile.jpg", "rb")
3:

peek (size = 0, /) ¶

Trả lại byte từ luồng mà không cần tiến lên vị trí. Nhiều nhất một lần đọc trên luồng thô được thực hiện để đáp ứng cuộc gọi. Số lượng byte được trả lại có thể ít hơn hoặc nhiều hơn yêu cầu.()

Đọc (size = -1, /) ¶

Đọc và trả về các byte, hoặc nếu kích thước không được cung cấp hoặc âm, cho đến khi EOF hoặc nếu cuộc gọi đọc sẽ chặn ở chế độ không chặn.(b, /)

Đọc và trả lại cho các byte kích thước chỉ với một cuộc gọi trên luồng thô. Nếu ít nhất một byte được đệm, chỉ trả lại byte được đệm. Nếu không, một cuộc gọi đọc luồng thô được thực hiện.bytes-like object, b, and return the number of bytes written. When in non-blocking mode, a

f = io.StringIO("some initial text data")
7 is raised if the buffer needs to be written out but the raw stream blocks.

classio.bufferedWriter (RAW, BUFFER_SIZE = DEFAULT_BUFFER_SIZE) ¶io.BufferedRandom(raw, buffer_size=DEFAULT_BUFFER_SIZE)

Một luồng nhị phân được đệm cung cấp quyền truy cập cấp cao hơn cho một luồng nhị phân thô có thể ghi, không thể tìm kiếm. Nó kế thừa

import fileinput
for line in fileinput.input():
    # do stuff here
9.

Khi viết vào đối tượng này, dữ liệu thường được đặt vào bộ đệm bên trong. Bộ đệm sẽ được viết ra đối tượng

python script.py - < file.txt
1 bên dưới trong các điều kiện khác nhau, bao gồm:

Khi bộ đệm quá nhỏ cho tất cả dữ liệu đang chờ xử lý;

Khi
import fileinput
for line in fileinput.input():
    # do stuff here
01 được gọi;
io.BufferedRWPair(reader, writer, buffer_size=DEFAULT_BUFFER_SIZE, /)

khi yêu cầu

python script.py file1.txt file2.txt file3.txt file4.txt
02 (đối tượng
cat file.txt | python script.py
05);

Khi đối tượng

cat file.txt | python script.py
02 bị đóng hoặc phá hủy.

cat file.txt | python script.py
04 thực hiện tất cả các phương pháp của ________ 39 ngoại trừ
import fileinput
for line in fileinput.input():
    # do stuff here
27, tăng
f = open("myfile.jpg", "rb")
4.

Cảnh báo

cat file.txt | python script.py
04 không cố gắng đồng bộ hóa các truy cập vào các luồng thô cơ bản của nó. Bạn không nên truyền nó cùng một đối tượng với người đọc và người viết; sử dụng
cat file.txt | python script.py
05 thay thế.

Văn bản I/O¶

classio.textiobase¶ io.TextIOBase

Lớp cơ sở cho các luồng văn bản. Lớp này cung cấp một giao diện dựa trên ký tự và dòng để truyền I/O. Nó kế thừa

f = open("myfile.jpg", "rb")
3.

import fileinput
for line in fileinput.input():
    # do stuff here
4 cung cấp hoặc ghi đè các thuộc tính và phương thức dữ liệu này ngoài các thuộc tính từ
f = open("myfile.jpg", "rb")
3:

mã hóa Or

Tên của mã hóa được sử dụng để giải mã các byte của luồng thành các chuỗi và để mã hóa các chuỗi thành byte.

lỗi

Cài đặt lỗi của bộ giải mã hoặc bộ mã hóa.

Newlines¶

Một chuỗi, một bộ chuỗi, hoặc

f = open("myfile.txt", "r", encoding="utf-8")
7, chỉ ra các dòng được dịch cho đến nay. Tùy thuộc vào việc thực hiện và cờ xây dựng ban đầu, điều này có thể không có sẵn.

đệm¶

Bộ đệm nhị phân cơ bản (một ví dụ

import fileinput
for line in fileinput.input():
    # do stuff here
9) mà
import fileinput
for line in fileinput.input():
    # do stuff here
4 liên quan. Đây không phải là một phần của API
import fileinput
for line in fileinput.input():
    # do stuff here
4 và có thể không tồn tại trong một số triển khai.

tách ra () ¶()

Tách các bộ đệm nhị phân cơ bản khỏi

import fileinput
for line in fileinput.input():
    # do stuff here
4 và trả lại nó.

Sau khi bộ đệm cơ bản đã được tách ra,

import fileinput
for line in fileinput.input():
    # do stuff here
4 ở trạng thái không thể sử dụng được.

Một số triển khai

import fileinput
for line in fileinput.input():
    # do stuff here
4, như
import fileinput
for line in fileinput.input():
    # do stuff here
3, có thể không có khái niệm bộ đệm cơ bản và gọi phương pháp này sẽ tăng
f = open("myfile.jpg", "rb")
4.

Mới trong phiên bản 3.1.

Đọc (size = -1, /) ¶(size=- 1, /)

Đọc và trả về ở hầu hết các ký tự kích thước từ luồng dưới dạng một

python script.py file1.txt file2.txt file3.txt file4.txt
2. Nếu kích thước là âm hoặc
f = open("myfile.txt", "r", encoding="utf-8")
7, hãy đọc cho đến khi EOF.

READLINE (size = -1, /) ¶(size=- 1, /)

Đọc cho đến khi Newline hoặc EOF và trả về một

python script.py file1.txt file2.txt file3.txt file4.txt
2. Nếu luồng đã ở EOF, một chuỗi trống sẽ được trả về.

Nếu kích thước được chỉ định, ở hầu hết các ký tự kích thước sẽ được đọc.

Seek (offset, whence = seek_set, /) ¶(offset, whence=SEEK_SET, /)

Thay đổi vị trí luồng thành phần bù đã cho. Hành vi phụ thuộc vào tham số WHENCE. Giá trị mặc định cho quá trình là

cat file.txt | python script.py
90.

  • cat file.txt | python script.py
    
    90 hoặc
    cat file.txt | python script.py
    
    86: Tìm kiếm từ đầu luồng (mặc định); Offset phải là một số được trả về bởi
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    49 hoặc không. Bất kỳ giá trị bù khác tạo ra hành vi không xác định.

  • cat file.txt | python script.py
    
    93 hoặc
    cat file.txt | python script.py
    
    94: Hãy tìm kiếm vị trí hiện tại; Offset phải bằng 0, đây là một hoạt động không hoạt động (tất cả các giá trị khác không được hỗ trợ).

  • cat file.txt | python script.py
    
    95 hoặc
    cat file.txt | python script.py
    
    96: Tìm kiếm đến cuối luồng; Offset phải bằng không (tất cả các giá trị khác không được hỗ trợ).

Trả lại vị trí tuyệt đối mới như một số mờ đục.

Mới trong phiên bản 3.1: Hằng số

cat file.txt | python script.py
97.The
cat file.txt | python script.py
97 constants.

kể()¶()

Trả về vị trí luồng hiện tại dưới dạng số mờ. Số lượng thường không đại diện cho một số byte trong bộ lưu trữ nhị phân cơ bản.

viết (s, /) ¶(s, /)

Viết chuỗi S vào luồng và trả về số lượng ký tự được viết.

classio.textiowrapper (bộ đệm, mã hóa = none, error = none, newLine = none, line_buffering = falseio.TextIOWrapper(buffer, encoding=None, errors=None, newline=None, line_buffering=False, write_through=False)

Một luồng văn bản được đệm cung cấp quyền truy cập cấp cao hơn vào luồng nhị phân được đệm

import fileinput
for line in fileinput.input():
    # do stuff here
9. Nó kế thừa
import fileinput
for line in fileinput.input():
    # do stuff here
4.

Mã hóa cho biết tên của mã hóa mà luồng sẽ được giải mã hoặc mã hóa. Nó mặc định là

python script.py - < file.txt
4.
python script.py - < file.txt
6 có thể được sử dụng để chỉ định mã hóa địa phương hiện tại một cách rõ ràng. Xem mã hóa văn bản để biết thêm thông tin.Text Encoding for more information.

Lỗi là một chuỗi tùy chọn chỉ định cách xử lý lỗi mã hóa và giải mã. Vượt qua

import fileinput
for line in fileinput.input():
    # do stuff here
59 để tăng ngoại lệ
f = io.StringIO("some initial text data")
9 nếu có lỗi mã hóa (mặc định là
f = open("myfile.txt", "r", encoding="utf-8")
7 có cùng hiệu ứng) hoặc vượt qua
import fileinput
for line in fileinput.input():
    # do stuff here
62 để bỏ qua các lỗi. .
import fileinput
for line in fileinput.input():
    # do stuff here
65 gây ra dữ liệu bị dị tật được thay thế bằng chuỗi thoát hiểm. Khi viết,
import fileinput
for line in fileinput.input():
    # do stuff here
66 (thay thế bằng tham chiếu ký tự XML thích hợp) hoặc
import fileinput
for line in fileinput.input():
    # do stuff here
67 (thay thế bằng trình tự thoát
import fileinput
for line in fileinput.input():
    # do stuff here
68). Bất kỳ tên xử lý lỗi nào khác đã được đăng ký với
import fileinput
for line in fileinput.input():
    # do stuff here
69 cũng hợp lệ.

Newline kiểm soát cách xử lý kết thúc dòng. Nó có thể là

f = open("myfile.txt", "r", encoding="utf-8")
7,
import fileinput
for line in fileinput.input():
    # do stuff here
71,
import fileinput
for line in fileinput.input():
    # do stuff here
72,
import fileinput
for line in fileinput.input():
    # do stuff here
73 và
import fileinput
for line in fileinput.input():
    # do stuff here
74. Nó hoạt động như sau:

  • Khi đọc đầu vào từ luồng, nếu Newline là

    f = open("myfile.txt", "r", encoding="utf-8")
    
    7, chế độ NewLines phổ quát sẽ được bật. Các dòng trong đầu vào có thể kết thúc trong
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72,
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    73 hoặc
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    74 và chúng được dịch thành
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72 trước khi được trả lại cho người gọi. Nếu Newline là
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    71, chế độ NewLines Universal được bật, nhưng các kết thúc dòng được trả lại cho người gọi không được dịch. Nếu Newline có bất kỳ giá trị pháp lý nào khác, các dòng đầu vào chỉ bị chấm dứt bởi chuỗi đã cho và kết thúc dòng được trả lại cho người gọi không được dịch.universal newlines mode is enabled. Lines in the input can end in
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72,
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    73, or
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    74, and these are translated into
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72 before being returned to the caller. If newline is
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    71, universal newlines mode is enabled, but line endings are returned to the caller untranslated. If newline has any of the other legal values, input lines are only terminated by the given string, and the line ending is returned to the caller untranslated.

  • Khi viết đầu ra vào luồng, nếu Newline là

    f = open("myfile.txt", "r", encoding="utf-8")
    
    7, bất kỳ ký tự
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72 nào được viết thành phân tách dòng mặc định của hệ thống,
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    83. Nếu Newline là
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    71 hoặc
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72, không có bản dịch nào diễn ra. Nếu Newline là bất kỳ giá trị pháp lý nào khác, bất kỳ ký tự
    import fileinput
    for line in fileinput.input():
        # do stuff here
    
    72 nào được viết thành chuỗi đã cho.

Nếu line_buffering là

cat file.txt | python script.py
77,
import fileinput
for line in fileinput.input():
    # do stuff here
01 được ngụ ý khi một cuộc gọi để viết có chứa một ký tự dòng mới hoặc trở lại vận chuyển.

Nếu write_through là

cat file.txt | python script.py
77, các cuộc gọi đến
python script.py file1.txt file2.txt file3.txt file4.txt
3 được đảm bảo sẽ không được đệm: bất kỳ dữ liệu nào được ghi trên đối tượng
python script.py - < file.txt
2 ngay lập tức được xử lý đến bộ đệm nhị phân bên dưới của nó.

Đã thay đổi trong phiên bản 3.3: Đối số Write_through đã được thêm vào.The write_through argument has been added.

Đã thay đổi trong phiên bản 3.3: Mã hóa mặc định hiện là

import fileinput
for line in fileinput.input():
    # do stuff here
92 thay vì
import fileinput
for line in fileinput.input():
    # do stuff here
93. Don Tiết thay đổi tạm thời mã hóa ngôn ngữ bằng cách sử dụng
import fileinput
for line in fileinput.input():
    # do stuff here
94, sử dụng mã hóa ngôn ngữ hiện tại thay vì mã hóa ưa thích của người dùng.The default encoding is now
import fileinput
for line in fileinput.input():
    # do stuff here
92 instead of
import fileinput
for line in fileinput.input():
    # do stuff here
93. Don’t change temporary the locale encoding using
import fileinput
for line in fileinput.input():
    # do stuff here
94, use the current locale encoding instead of the user preferred encoding.

Đã thay đổi trong phiên bản 3.10: Đối số mã hóa hiện hỗ trợ tên mã hóa giả

f = open("myfile.txt", "r", encoding="utf-8")
8.The encoding argument now supports the
f = open("myfile.txt", "r", encoding="utf-8")
8 dummy encoding name.

python script.py - < file.txt
2 cung cấp các thuộc tính và phương thức dữ liệu này ngoài các thuộc tính từ
import fileinput
for line in fileinput.input():
    # do stuff here
4 và
f = open("myfile.jpg", "rb")
3:

line_buffering¶

Cho dù bộ đệm dòng được bật.

write_through¶

Liệu các văn bản được chuyển ngay lập tức cho bộ đệm nhị phân cơ bản.

Mới trong phiên bản 3.7.

Tái cấu hình (*[, mã hóa] [, lỗi] [, Newline] [, & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; & nbsp; line_buffering] [, write_through])(*[, encoding][, errors][, newline][,                      line_buffering][, write_through])

Cấu hình lại luồng văn bản này bằng cách sử dụng các cài đặt mới để mã hóa, lỗi, dòng mới, line_buffering và write_through.

Các tham số không được chỉ định giữ cài đặt hiện tại, ngoại trừ

import fileinput
for line in fileinput.input():
    # do stuff here
99 được sử dụng khi mã hóa được chỉ định nhưng không được chỉ định lỗi.

Không thể thay đổi mã hóa hoặc dòng mới nếu một số dữ liệu đã được đọc từ luồng. Mặt khác, thay đổi mã hóa sau khi viết là có thể.

Phương thức này thực hiện một luồng ẩn được tuôn ra trước khi đặt các tham số mới.

Mới trong phiên bản 3.7.

Tái cấu hình (*[, mã hóa] [, lỗi] [, Newline] [, & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; ; & nbsp; & nbsp; & nbsp; & nbsp; line_buffering] [, write_through])The method supports

python script.py - < file.txt
6 option.

Cấu hình lại luồng văn bản này bằng cách sử dụng các cài đặt mới để mã hóa, lỗi, dòng mới, line_buffering và write_through. io.StringIO(initial_value='', newline='\n')

Các tham số không được chỉ định giữ cài đặt hiện tại, ngoại trừ

import fileinput
for line in fileinput.input():
    # do stuff here
99 được sử dụng khi mã hóa được chỉ định nhưng không được chỉ định lỗi.

Không thể thay đổi mã hóa hoặc dòng mới nếu một số dữ liệu đã được đọc từ luồng. Mặt khác, thay đổi mã hóa sau khi viết là có thể.

Phương thức này thực hiện một luồng ẩn được tuôn ra trước khi đặt các tham số mới.

Đã thay đổi trong phiên bản 3.11: Phương thức hỗ trợ tùy chọn

python script.py - < file.txt
6.

Classio.Stringio (init_value = '', newline = '\ n') ¶

Một luồng văn bản sử dụng bộ đệm văn bản trong bộ nhớ. Nó kế thừa
import fileinput
for line in fileinput.input():
    # do stuff here
4.
()

Bộ đệm văn bản bị loại bỏ khi phương thức

python script.py file1.txt file2.txt file3.txt file4.txt
12 được gọi.

Giá trị ban đầu của bộ đệm có thể được đặt bằng cách cung cấp ban đầu_value. Nếu bản dịch Newline được bật, Newlines sẽ được mã hóa như thể bằng

python script.py file1.txt file2.txt file3.txt file4.txt
3. Luồng được định vị ở đầu bộ đệm mô phỏng việc mở một tệp hiện có ở chế độ
python script.py - < file.txt
04, làm cho nó sẵn sàng ghi ngay từ đầu hoặc để ghi ghi đè lên giá trị ban đầu. Để mô phỏng việc mở một tệp trong chế độ
python script.py - < file.txt
05 đã sẵn sàng để nối thêm, hãy sử dụng
python script.py - < file.txt
06 để định vị lại luồng ở cuối bộ đệm.

cat file.txt | python script.py
6

Đối số Newline hoạt động giống như
python script.py - < file.txt
2, ngoại trừ khi viết đầu ra vào luồng, nếu Newline là
f = open("myfile.txt", "r", encoding="utf-8")
7, Newlines được viết là
python script.py - < file.txt
09 trên tất cả các nền tảng.
io.IncrementalNewlineDecoder

import fileinput
for line in fileinput.input():
    # do stuff here
3 cung cấp phương pháp này ngoài các phương pháp từ
import fileinput
for line in fileinput.input():
    # do stuff here
4 và
f = open("myfile.jpg", "rb")
3:universal newlines mode. It inherits
python script.py - < file.txt
15.

getValue ()

Trả về

python script.py file1.txt file2.txt file3.txt file4.txt
2 chứa toàn bộ nội dung của bộ đệm. Các dòng mới được giải mã như thể bằng
cat file.txt | python script.py
62, mặc dù vị trí luồng không thay đổi.

Ví dụ sử dụng:

classio.incrementalnewlinedecoder¶

Một codec trợ giúp giải mã newlines cho chế độ Newlines phổ quát. Nó kế thừa python script.py - < file.txt 15.

Màn biểu diễn¶

Phần này thảo luận về hiệu suất của các triển khai I/O bê tông được cung cấp.

Nhiều sợi chỉ

Các đối tượng

f = open("myfile.jpg", "rb")
7 an toàn chủ đề trong phạm vi mà hệ điều hành gọi (chẳng hạn như
python script.py - < file.txt
21 trong Unix), chúng cũng được bọc an toàn.

Các đối tượng đệm nhị phân (các trường hợp của

cat file.txt | python script.py
03,
cat file.txt | python script.py
02,
cat file.txt | python script.py
05 và
cat file.txt | python script.py
04) bảo vệ các cấu trúc bên trong của chúng bằng cách sử dụng khóa; Do đó, an toàn khi gọi họ từ nhiều luồng cùng một lúc.

Đối tượng

python script.py - < file.txt
2 không an toàn cho luồng.

Sự trở lại

Các đối tượng đệm nhị phân (các trường hợp của

cat file.txt | python script.py
03,
cat file.txt | python script.py
02,
cat file.txt | python script.py
05 và
cat file.txt | python script.py
04) không được tái lập. Mặc dù các cuộc gọi reentrant sẽ không xảy ra trong các tình huống bình thường, chúng có thể phát sinh từ việc thực hiện I/O trong một trình xử lý
python script.py - < file.txt
31. Nếu một chủ đề cố gắng nhập lại một đối tượng được đệm mà nó đã truy cập, một
python script.py - < file.txt
32 sẽ được nâng lên. Lưu ý Điều này không cấm một chủ đề khác vào đối tượng được đệm.

Các ở trên hoàn toàn mở rộng cho các tệp văn bản, vì hàm

import fileinput
for line in fileinput.input():
    # do stuff here
2 sẽ bọc một đối tượng được đệm bên trong
python script.py - < file.txt
2. Điều này bao gồm các luồng tiêu chuẩn và do đó cũng ảnh hưởng đến chức năng
python script.py - < file.txt
35 tích hợp.

Đầu vào trong phát trực tuyến là gì?

Một luồng đầu vào xử lý dữ liệu chảy vào một chương trình. Một luồng đầu ra xử lý dữ liệu chảy ra khỏi một chương trình. Trong hình, mỗi "O" là một phần dữ liệu. Dữ liệu được phát trực tuyến từ nguồn vào chương trình. Kết quả tính toán đang phát trực tuyến từ chương trình đến đích.handles data flowing into a program. An output stream handles data flowing out of a program. In the picture, each "O" is a piece of data. The data are streaming from the source into the program. Computed results are streaming from the program to the destination.

Một luồng trong Python là gì?

Các luồng là các nguyên thủy ASYNC/đang sẵn sàng cấp cao để làm việc với các kết nối mạng. Các luồng cho phép gửi và nhận dữ liệu mà không cần sử dụng các cuộc gọi lại hoặc giao thức và giao thức cấp thấp.high-level async/await-ready primitives to work with network connections. Streams allow sending and receiving data without using callbacks or low-level protocols and transports.

Làm thế nào để Python xử lý dữ liệu phát trực tuyến?

Sử dụng thư viện Python có thể hỗ trợ bạn trong việc tìm hiểu luồng dữ liệu bằng cách sử dụng các phương pháp khác nhau.Thư viện này cho phép các mô hình tìm hiểu một điểm dữ liệu tại một thời điểm, cho phép cập nhật khi cần thiết.Phương pháp này hỗ trợ học tập từ một lượng lớn dữ liệu không được lưu trữ trong bộ nhớ chính.. This library enables models to learn one data point at a time, allowing for updates as needed. This method aids in learning from large amounts of data that are not stored in the main memory.

Python có hỗ trợ phát trực tuyến không?

Stream-Python là khách hàng Python chính thức cho Stream, một dịch vụ web để xây dựng các bản tin và luồng hoạt động có thể mở rộng.Lưu ý cũng có một thư viện tích hợp Django - luồng cấp cao hơn, nối vào Django ORM.Bạn có thể đăng ký tài khoản luồng tại https://getstream.io/get_started., a web service for building scalable newsfeeds and activity streams. Note there is also a higher level Django - Stream integration library which hooks into the Django ORM. You can sign up for a Stream account at https://getstream.io/get_started.