2012-01-24 43 views
8

Tôi biết điều này nghe có vẻ giống như một cái gì đó tôi có thể google, nhưng sự thật là tôi không tìm thấy hoặc không hiểu những gì rất ít Python 3 nguồn giải thích.Bất cứ ai có thể cho tôi một hướng dẫn nhanh chóng trong stdin và stdout trong Python 3?

Vì vậy, đây là những câu hỏi của tôi:

  • input() các stdin hàm trong Python 3? Điều đó có nghĩa là khi bạn mở chương trình filename.py, thì stdin là những gì người dùng gõ?
  • Có phải print() chức năng stdout trong Python 3 hoặc bạn có phải ghi vào tệp không?
  • Đối với Spotify puzzle, được gọi là "Dữ liệu nhập được đọc từ stdin". Tệp của tôi nên bao gồm stdinstdout?

Cập nhật: Điều đó có nghĩa là tôi có thể sử dụng:

import sys 
unfmtdDate = str(sys.stdin.read()) 

... thay vì ...

unfmtdDate = str(input()) 

?

+0

Bạn có ý nghĩa gì bởi 'hàm stdin' và 'chức năng mập mạp'? Stdin và stout là các tệp. Không có chức năng. Những tập tin này có phương pháp để đọc hoặc viết. Bạn có thể làm rõ ý bạn là gì? –

+0

Tôi có nghĩa là làm thế nào để bạn viết vào các tập tin, và là nó có thể nhìn vào những tập tin? –

+0

Câu trả lời là: 1. "Có và có". 2. "Có". 3. "Huh? Câu hỏi đó không có ý nghĩa gì cả." Cập nhật: "Có, và không." –

Trả lời

7

stdinstdout là các đối tượng giống như tệp được hệ điều hành cung cấp. Nói chung, khi một chương trình được chạy trong một phiên tương tác, stdin là đầu vào bàn phím và stdout là tty của người dùng, nhưng vỏ có thể được sử dụng để chuyển hướng chúng từ các tệp thông thường hoặc đầu ra đường ống và nhập vào các chương trình khác.

input() được sử dụng để nhắc người dùng nhập liệu đã nhập. Trong trường hợp của một cái gì đó giống như một câu đố lập trình, nó thường giả định rằng stdin được chuyển hướng từ một tệp dữ liệu và khi định dạng đầu vào được cung cấp thì tốt nhất là sử dụng sys.stdin.read() thay vì nhắc nhập bằng input(). input() dành cho đầu vào tương tác của người dùng, nó có thể hiển thị lời nhắc (trên sys.stdout) và sử dụng thư viện readline GNU (nếu có) để cho phép chỉnh sửa đường, v.v.

print() thực sự là cách phổ biến nhất viết tới stdout. Không cần phải làm gì đặc biệt để xác định luồng đầu ra. print() ghi vào sys.stdout nếu không có tệp thay thế nào được cung cấp cho nó dưới dạng thông số file=.

+0

@ Wooble Cảm ơn rất nhiều! –

0

Từ the Python documentation for print:

Các tập tin số phải là một đối tượng với một phương pháp write(string); nếu không có hoặc None, sys.stdout sẽ được sử dụng. Đệm đầu ra được xác định bởi tệp. Sử dụng file.flush() để đảm bảo, ví dụ, xuất hiện ngay lập tức trên màn hình.

0

Chức năng input()stdin bằng Python 3?

Có.

Điều đó có nghĩa là khi bạn mở chương trình filename.py, thì stdin là loại người dùng nào?

Có.

Chức năng print()stdout bằng Python 3 hoặc bạn phải ghi vào tệp?

Bạn có thể sử dụng một trong hai.

Đối với câu đố Spotify, được gọi là "Đầu vào được đọc từ stdin". Tệp của tôi nên bao gồm stdinstdout?

Chỉ cần sử dụng import sys để đến các tệp sys.stdinsys.stdout. Bạn không cần phải nhập khẩu nếu bạn sử dụng các chức năng built-in inputprint để thay thế.

+3

'stout'? 'stein'? Có một loại bia khác! –

+0

@Mike DeSimone Cảm ơn bạn! –

+0

@Greg Hewgill: Trình duyệt của tôi dường như đã phát triển một tương lai tự động sửa lỗi. Nó đang gây phiền nhiễu. –

0

Đầu vào() hàm stdin trong Python 3 chưa? Điều đó có nghĩa là khi bạn mở chương trình filename.py, stdin là những gì người dùng gõ?

input() đọc từ đầu vào chuẩn (được gọi là stdin để viết tắt trong một số ngữ cảnh), có. Không có ngôn ngữ mà tôi biết có một chức năng tên stdin trong thư viện chuẩn. Khi bạn chạy chương trình theo cách thông thường, các kiểu người dùng được cung cấp cho đầu vào tiêu chuẩn, có. Đó là ý nghĩa của "đầu vào tiêu chuẩn". Có một chương trình riêng biệt cung cấp những gì người dùng nhập vào đầu vào tiêu chuẩn (và thực hiện một vài điều thuận tiện khác như giải thích phím xóa lùi). Kịch bản của bạn không phải là những gì tạo ra cửa sổ văn bản được gõ vào.

sys.stdin (ví dụ, giá trị stdin định nghĩa trong module sys) là một đối tượng rằng đại diện đầu vào tiêu chuẩn. Điều này được cung cấp để bạn có thể sử dụng nó trong các bối cảnh mà bạn dự kiến ​​sẽ chỉ định "một tệp", làm cho đầu vào được đọc từ người dùng thay vì tệp.

In() hàm stdout trong Python 3 hoặc bạn có phải ghi vào tệp không?

print() viết (theo mặc định, bạn có thể cung cấp một cuộc tranh luận file từ khóa để thay đổi điều này) đến đầu ra tiêu chuẩn (gọi tắt là stdout cho ngắn trong một số bối cảnh), vâng. Tất cả hãy cẩn thận ở trên áp dụng: stdout không phải là một chức năng trong bất kỳ ngôn ngữ mà tôi từng nghe nói, và một chương trình hoàn toàn tách biệt thực sự khiến sản lượng kịch bản của bạn sẽ được hiển thị trên màn hình trong một khá 80x24 trắng-text-on- hộp đen nền (hoặc tuy nhiên bạn đã cấu hình nó).

sys.stdout là một đối tượng rằng đại diện đầu ra tiêu chuẩn, sử dụng tương tự như sys.stdin. Bạn có thể sử dụng nó một cách rõ ràng với hàm print, nhưng không có điểm: đó là mặc định.

Đối với câu đố Spotify, được gọi là "Đầu vào được đọc từ stdin". Tập tin của tôi bao gồm stdin và stdout là gì?

Đặc điểm sự cố có nghĩa là "sử dụng chức năng input() để nhận dữ liệu nhập".

+0

Lưu ý rằng 'đầu vào()' ** không thể đọc được từ một tệp được chỉ định (có nhiều cách để làm cho đầu vào tiêu chuẩn là một tệp, nhưng một lần nữa, đó thường là bên ngoài chương trình của bạn). Nó không có nghĩa là đối xứng chính xác với hàm 'print()'. Sau khi tất cả, nó sẽ hiển thị một dấu nhắc ... sẽ không có ý nghĩa để hiển thị một dấu nhắc trong khi đọc từ một tập tin, xem? –

1

Khi bạn chạy chương trình Python, sys.stdin là đối tượng tệp được kết nối với đầu vào tiêu chuẩn (STDIN), sys.stdout là đối tượng tệp cho đầu ra tiêu chuẩn (STDOUT) và sys.stderr là đối tượng tệp cho lỗi chuẩn (STDERR).

Bất kỳ nơi nào trong tài liệu bạn thấy tham chiếu đến đầu vào tiêu chuẩn, đầu ra tiêu chuẩn hoặc lỗi chuẩn, nó đề cập đến các xử lý tệp này. Bạn có thể truy cập trực tiếp chúng (sys.stdout.write(...), sys.stdin.read() v.v.) hoặc sử dụng các chức năng tiện lợi sử dụng các luồng này, như input()print().

Đối với các câu đố Spotify, cách dễ nhất để đọc đầu vào sẽ là một cái gì đó như thế này:

import sys 
data = sys.stdin.read() 

Sau hai dòng đầu vào cho chương trình của bạn hiện đang trong str data.

Các vấn đề liên quan