2013-11-04 18 views
1

這個問題有點與Fool python's os.isatty from a bash script相反。我需要Python腳本來認爲它的stdin附加到tty。傻瓜python,它被稱爲tty

特別是,我需要使用一些腳本,根據sys.stdin.isatty()更改其行爲。但是,當蟒蛇被稱爲在bash循環,stdin.isatty()返回false

cat 'file.txt' | while read ENTRY 
do 
python -c "import sys; print sys.stdin.isatty()" 
done 

那麼,有沒有辦法,也許換行調用,因此Python會認爲這是從tty調用。

+0

只是出於好奇,你爲什麼要這麼做? – tangrs

+0

@tangrs:根據是否從TTY調用某個程序的行爲不同而有用;大多數情況下,輸出的延遲刷新已經深埋在libc中,因此也會影響Python腳本。 – Alfe

+0

就你而言,Python腳本的stdin不是TTY,而是while循環之前的'cat'命令的管道。那個命令不是TTY。 – Alfe

回答

1

你的情況,你可以只嘗試重定向單獨Python腳本的輸入:

cat 'file.txt' | while read ENTRY 
do 
    python -c "import sys; print sys.stdin.isatty()" < /dev/tty 
done 
+0

非常感謝,它很好用)。 – AAzza