Trong Python, làm thế nào để bạn kiểm tra xem sys.stdin
có dữ liệu hay không?Làm cách nào để kiểm tra xem liệu stdin có một số dữ liệu?
Tôi thấy rằng os.isatty(0)
không chỉ có thể kiểm tra xem stdin có được kết nối với thiết bị TTY hay không, mà còn nếu có sẵn dữ liệu.
Nhưng nếu ai đó sử dụng mã như
sys.stdin = cStringIO.StringIO("ddd")
và sau đó sử dụng os.isatty(0)
, nó vẫn trả về True. Tôi cần phải làm gì để kiểm tra xem liệu stdin có dữ liệu?
chính xác bạn muốn đạt được điều gì? – shahjapan
Điều đó xảy ra vì 'os.isatty (0)' kiểm tra xem tệp có liên quan đến bộ mô tả tệp (fd) 0 là TTY hay không. Khi bạn thay đổi biến 'sys.stdin', bạn không thay đổi tệp được liên kết với fd0. fd0 vẫn trỏ đến stdin gốc (đó là một TTY trong trường hợp của bạn). –
Kiểm tra [câu trả lời này] (http://stackoverflow.com/questions/3731681/capturing-user-input-at-arbitrary-times-in-python/3732001#3732001). Nó có liên quan đến câu hỏi của bạn không? –