如何通過Python打印每個文件的以下內容?Python單行打印當前目錄中的每個文件
python -c "import sys;print '>>',sys.argv[1:]" | dir *.*
具體想知道如何管入python -c。 DOS或Cygwin響應接受。
如何通過Python打印每個文件的以下內容?Python單行打印當前目錄中的每個文件
python -c "import sys;print '>>',sys.argv[1:]" | dir *.*
具體想知道如何管入python -c。 DOS或Cygwin響應接受。
Y您可以通過讀取sys.stdin讀取管道到 Python腳本的數據。例如:
ls -al | python -c "import sys; print sys.stdin.readlines()"
這是不完全清楚你想要做什麼(也許我是愚蠢的)。這個混淆來自你的例子,它將數據從python腳本中傳出。
python -c "import os; print os.listdir('.')"
如果要應用一些格式就像你在你的問題有,
python -c "import os; print '\n'.join(['>>%s' % x for x in os.listdir('.')])"
如果你想使用管道,使用xargs
:
ls | xargs python -c "import sys; print '>>', sys.argv[1:]"
或反引號:
python -c "import sys; print '>>', sys.argv[1:]" `ls`
謝謝,想知道如何管道。 – Luis 2009-03-04 23:48:28
如果你要打印所有文件:如果你想如果你想包括「>>」之前各只打印在當前目錄中的文件
find . -type f -maxdepth 1
find . -type f
line
find . -type f -maxdepth 1 | xargs -L 1 echo ">>"
如果你不想在「>」之間的空格, >「和$回聲的路徑
find . -type f -maxdepth 1 | xargs -L 1 printf ">>%s\n"
當然這都是使用cygwin的。
+1 - python很不錯(我是一個粉絲),但有時候有些工具只是爲了完成這項工作而已:-) – 2009-03-05 00:47:24
ls | python -c "import sys; print sys.stdin.read()"
剛讀標準輸入作爲正常的管道
想知道如何管,雖然
你有管道以錯誤的方式,如果你想喂輸出'dir'導入Python,'dir'必須在左邊。例如:
dir "*.*" | python -c "import sys;[sys.stdout.write('>>%s\n' % line) for line in sys.stdin]"
(與列表理解的黑客是因爲你不允許塊引入一個分號後「的」語句在一行。)
顯然Python的本地解決方案('os.listdir')在實踐中要好得多。
特別想知道如何管到一個Python -c
管道通過程序是從視節目的點透明,所有的程序都知道的是,它從標準輸入流獲得輸入
一般來說,一個shell命令的形式爲
A | B
重定向A的輸出爲B的
所以如果A吐出「ASDF」標準輸出,則B被「ASDF」到它的標準輸入
在python標準輸入流輸入是sys.stdin
似乎有比使用Python更好的方式來做到這一點... – 2009-03-04 23:47:18
這不是真的在班輪上!除非你遵循一行代碼的非常laaaaax定義,空行也被計算在內! – hasen 2009-03-05 06:47:01
你究竟在做什麼? dir *。*已經列出了它們,所以有什麼意義? – hasen 2009-03-05 09:02:21