Cách lấy tệp làm đầu vào trong python

Mô-đun này triển khai một lớp trình trợ giúp và các chức năng để ghi nhanh một vòng lặp trên đầu vào tiêu chuẩn hoặc danh sách các tệp. Nếu bạn chỉ muốn đọc hoặc ghi một tệp, hãy xem

Việc sử dụng điển hình là

import fileinput
for line in fileinput.input[encoding="utf-8"]:
    process[line]

Điều này lặp lại trên các dòng của tất cả các tệp được liệt kê trong

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
0, mặc định là
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
1 nếu danh sách trống. Nếu tên tệp là
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
2, nó cũng được thay thế bằng
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
1 và chế độ đối số tùy chọn và móc mở sẽ bị bỏ qua. Để chỉ định một danh sách tên tệp thay thế, hãy chuyển nó làm đối số đầu tiên cho. Một tên tệp duy nhất cũng được cho phép

Theo mặc định, tất cả các tệp được mở ở chế độ văn bản, nhưng bạn có thể ghi đè lên chế độ này bằng cách chỉ định tham số chế độ trong cuộc gọi đến hoặc. Nếu xảy ra lỗi I/O trong khi mở hoặc đọc tệp,

Đã thay đổi trong phiên bản 3. 3. đã từng lớn lên; .

Nếu

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
1 được sử dụng nhiều hơn một lần, thì lần sử dụng thứ hai và tiếp theo sẽ không trả về dòng nào, có lẽ ngoại trừ trường hợp sử dụng tương tác hoặc nếu nó đã được đặt lại rõ ràng [e. g. sử dụng
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
6]

Các tệp trống được mở và đóng ngay lập tức;

Các dòng được trả về với bất kỳ dòng mới nào còn nguyên vẹn, điều đó có nghĩa là dòng cuối cùng trong tệp có thể không có dòng nào

Bạn có thể kiểm soát cách mở tệp bằng cách cung cấp móc mở thông qua tham số openhook tới hoặc. Móc phải là một hàm nhận hai đối số, tên tệp và chế độ, đồng thời trả về một đối tượng giống như tệp được mở tương ứng. Nếu mã hóa và/hoặc lỗi được chỉ định, chúng sẽ được chuyển đến hook dưới dạng đối số từ khóa bổ sung. Mô-đun này cung cấp một để hỗ trợ các tệp nén

Chức năng sau đây là giao diện chính của mô-đun này

đầu vào tệp. đầu vào[tệp=Không có , tại chỗ=Sai , sao lưu='' , * , mode='r' , openhook=Không có , mã hóa=Không có , lỗi=Không có]

Tạo một thể hiện của lớp. Phiên bản sẽ được sử dụng làm trạng thái chung cho các chức năng của mô-đun này và cũng được trả lại để sử dụng trong quá trình lặp lại. Các tham số của hàm này sẽ được truyền cùng với hàm tạo của lớp

Thể hiện có thể được sử dụng làm trình quản lý ngữ cảnh trong câu lệnh. Trong ví dụ này, đầu vào bị đóng sau khi thoát câu lệnh

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
3, ngay cả khi có ngoại lệ xảy ra

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]

Đã thay đổi trong phiên bản 3. 2. Có thể được sử dụng làm trình quản lý ngữ cảnh.

Đã thay đổi trong phiên bản 3. 8. Chế độ tham số từ khóa và openhook hiện chỉ có từ khóa.

Đã thay đổi trong phiên bản 3. 10. Mã hóa tham số chỉ từ khóa và các lỗi được thêm vào.

Các chức năng sau sử dụng trạng thái chung được tạo bởi ;

đầu vào tệp. tên tệp[]

Trả về tên của tệp hiện đang được đọc. Trước khi dòng đầu tiên được đọc, trả về

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
7

đầu vào tệp. fileno[]

Trả về số nguyên “mô tả tệp” cho tệp hiện tại. Khi không có tệp nào được mở [trước dòng đầu tiên và giữa các tệp], trả về

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
8

đầu vào tệp. lineno[]

Trả về số dòng tích lũy của dòng vừa được đọc. Trước khi dòng đầu tiên được đọc, trả về

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
9. Sau khi dòng cuối cùng của tệp cuối cùng đã được đọc, trả về số dòng của dòng đó

đầu vào tệp. filelineno[]

Trả về số dòng trong tệp hiện tại. Trước khi dòng đầu tiên được đọc, trả về

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
9. Sau khi dòng cuối cùng của tệp cuối cùng đã được đọc, trả về số dòng của dòng đó trong tệp

đầu vào tệp. isfirstline[]

Trả về

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
51 nếu dòng vừa đọc là dòng đầu tiên trong tệp của nó, nếu không thì trả về
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
52

đầu vào tệp. isstdin[]

Trả về

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
51 nếu dòng cuối cùng được đọc từ
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
1, ngược lại trả về
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
52

đầu vào tệp. tệp tiếp theo[]

Đóng tệp hiện tại để lần lặp tiếp theo sẽ đọc dòng đầu tiên từ tệp tiếp theo [nếu có]; . Tên tệp không được thay đổi cho đến khi dòng đầu tiên của tệp tiếp theo được đọc. Trước khi dòng đầu tiên được đọc, chức năng này không có tác dụng; . Sau khi dòng cuối cùng của tệp cuối cùng đã được đọc, chức năng này không có tác dụng

đầu vào tệp. đóng[]

Đóng trình tự

Lớp thực hiện hành vi trình tự do mô-đun cung cấp cũng có sẵn để phân lớp

lớp đầu vào tệp. FileInput[tệp=Không có , tại chỗ=Sai , sao lưu='' , * , mode='r' , openhook=Không có , mã hóa=Không có , lỗi=Không có]

Lớp học là việc thực hiện; . Ngoài ra, nó còn có một phương thức trả về dòng đầu vào tiếp theo. Trình tự phải được truy cập theo thứ tự tuần tự nghiêm ngặt;

Với chế độ, bạn có thể chỉ định chế độ tệp nào sẽ được chuyển đến. Nó phải là một trong

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
08 và
with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
09

Openhook, khi được cung cấp, phải là một hàm nhận hai đối số, tên tệp và chế độ, đồng thời trả về một đối tượng giống như tệp được mở tương ứng. Bạn không thể sử dụng tại chỗ và openhook cùng nhau

Bạn có thể chỉ định mã hóa và lỗi được chuyển đến hoặc openhook

Một thể hiện có thể được sử dụng làm trình quản lý ngữ cảnh trong câu lệnh. Trong ví dụ này, đầu vào bị đóng sau khi thoát câu lệnh

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]
3, ngay cả khi có ngoại lệ xảy ra

with FileInput[files=['spam.txt', 'eggs.txt']] as input:
    process[input]

Đã thay đổi trong phiên bản 3. 2. Có thể được sử dụng làm trình quản lý ngữ cảnh.

Đã thay đổi trong phiên bản 3. 8. Chế độ thông số từ khóa và openhook hiện chỉ có từ khóa.

Đã thay đổi trong phiên bản 3. 10. Mã hóa tham số chỉ từ khóa và các lỗi được thêm vào.

Đã thay đổi trong phiên bản 3. 11. Chế độ

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
04 và
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
05 và phương thức
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
06 đã bị xóa.

Lọc tại chỗ tùy chọn. nếu đối số từ khóa

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
07 được chuyển đến hoặc đến hàm tạo, tệp sẽ được chuyển đến tệp sao lưu và đầu ra tiêu chuẩn được chuyển hướng đến tệp đầu vào [nếu tệp cùng tên với tệp sao lưu đã tồn tại, tệp sẽ được thay thế một cách im lặng . Điều này giúp có thể viết một bộ lọc ghi lại tệp đầu vào của nó tại chỗ. Nếu tham số sao lưu được cung cấp [thường là
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
10], nó chỉ định phần mở rộng cho tệp sao lưu và tệp sao lưu vẫn còn xung quanh; . Tính năng lọc tại chỗ bị tắt khi đầu vào tiêu chuẩn được đọc

Hai móc mở sau được cung cấp bởi mô-đun này

đầu vào tệp. hook_compressed[tên tệp , chế độ , * , mã hóa=Không có , lỗi=Không có]

Mở các tệp được nén bằng gzip và bzip2 một cách trong suốt [được các tiện ích mở rộng

with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
12 và
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
13 nhận dạng] bằng cách sử dụng các mô-đun và. Nếu phần mở rộng của tên tệp không phải là
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
12 hoặc
with fileinput.input[files=['spam.txt', 'eggs.txt'], encoding="utf-8"] as f:
    for line in f:
        process[line]
13 thì tệp được mở bình thường [nghĩa là sử dụng mà không cần giải nén]

Làm cách nào để đọc đầu vào từ tệp trong Python?

Có 6 chế độ truy cập trong python. .
Chỉ đọc ['r']. Mở tệp văn bản để đọc. .
Đọc và Viết ['r+']. Mở tệp để đọc và ghi. .
Chỉ viết ['w']. Mở tệp để ghi. .
Viết và Đọc ['w+']. Mở tệp để đọc và ghi. .
Chỉ nối thêm ['a']. Mở tệp để ghi

Làm cách nào để nhập tệp bằng Python?

Nếu bạn có tệp python của riêng mình muốn nhập, bạn có thể sử dụng câu lệnh nhập như sau. >>> nhập my_file # giả sử bạn có tệp my_file. py trong thư mục hiện tại. # Đối với các tệp trong các thư mục khác, hãy cung cấp đường dẫn đến tệp đó, tuyệt đối hoặc tương đối.

Chủ Đề