【问题标题】:Python one-liner to print every file in the current directoryPython单行打印当前目录中的每个文件
【发布时间】:2009-03-04 23:45:09
【问题描述】:

如何通过 Python 使以下一行打印每个文件?

python -c "import sys;print '>>',sys.argv[1:]" | dir *.*

特别想知道如何通过管道输入 python -c。 接受 DOS 或 Cygwin 响应。

【问题讨论】:

  • 似乎有比使用 Python 更好的方法...
  • 这不是真正的班轮!!!除非您遵循对代码行的非常laaaaax 定义,空行也被计​​算在内!
  • 你到底想做什么?? dir . 已经全部列出来了,还有什么意义呢?

标签: python cygwin cmd pipe


【解决方案1】:
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`

【讨论】:

  • 谢谢,不过想知道如何使用管道。
【解决方案2】:

您可以通过读取 sys.stdin 来读取通过管道输入 Python 脚本的数据。例如:

ls -al | python -c "import sys; print sys.stdin.readlines()"

你想做什么并不完全清楚(也许我很愚蠢)。混淆来自您的示例,该示例将数据从 python 脚本中传递出来。

【讨论】:

    【解决方案3】:

    如果你想打印所有个文件:

    find . -type f
    

    如果你只想打印当前目录的文件

    find . -type f -maxdepth 1
    

    如果你想在每一行之前包含“>>”

    find . -type f -maxdepth 1 | xargs -L 1 echo ">>"
    

    如果你不想在 ">>" 和 $path from echo 之间有空格

    find . -type f -maxdepth 1 | xargs -L 1 printf ">>%s\n"
    

    当然,这都是使用cygwin。

    【讨论】:

    • +1 - python 很好(我是一个粉丝),但有时已经有工具可以完成这项工作:-)
    【解决方案4】:
    ls | python -c "import sys; print sys.stdin.read()"
    

    像往常一样读取管道的标准输入

    【讨论】:

    • 本质上没有意义,但它是稍微复杂且可能有用的命令的起点。
    【解决方案5】:

    想知道如何使用管道

    你把管道弄错了,如果你想把'dir'的输出输入Python,'dir'必须在左边。例如:

    dir "*.*" | python -c "import sys;[sys.stdout.write('>>%s\n' % line) for line in sys.stdin]"
    

    (使用列表理解的技巧是因为您不允许在分号后的一行中使用块引入“for”语句。)

    显然 Python 原生解决方案 (‘os.listdir’) 在实践中要好得多。

    【讨论】:

      【解决方案6】:

      特别想知道如何通过管道输入 python -c

      cobbal's answer

      从程序的角度来看,通过程序的管道是透明的,程序所知道的只是它从标准输入流中获取输入

      一般来说,形式为

      的 shell 命令
      A | B
      

      将A的输出重定向为B的输入

      因此,如果 A 将“asdf”输出到标准输出,则 B 将“asdf”输入其标准输入

      python中的标准输入流是sys.stdin

      【讨论】:

      • 有一件事让我很困扰。为什么要使用python -c
      • 避免写入一个py文件保存它然后通过cmd行运行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多