0

我正在开发一个与 bash 的“wc”(字数统计)命令完全相同的 python 3 项目。输入格式如下所示:

$ python3 myWC.py < fileName.txt

我想使用给定的文件来计算文件中的字节、单词和行并打印它们。我尝试过使用标准输入,但即使是简单的 print() 语句似乎也在打印标准输入的对象,而不是给出的实际字符串。有人可以给我一些关于 Python 3 中基本标准输入可用性的指导吗?谢谢!

正如下面所指出的,我使用的是“>”而不是“<”。但是现在当我运行这段代码时:

import sys

def main():
        word = sys.stdin.readline()
        print(word)

main()

我只是在终端中得到一个空行作为输出

4

3 回答 3

4

扩展我上面的评论,我想说下面的代码可以解决问题(注意:这不是 Python 3,而是 Python 2.7。一些快速的谷歌搜索告诉我它们在这方面是相似的)。

在 echo.py 中:

import sys
print sys.stdin.read()

然后在你的终端中这样调用它:

python echo.py < test.txt

这应该会在您的终端上回显 test.txt 的内容。

于 2013-03-08T22:08:33.057 回答
0

与重定向不同的方法:使用fileinput

# myWC.py
def main():
    for line in fileinput.input():
        # Do something with the line

main()

如何调用:

python myWC.py filename.txt # One file
python myWC.py file1.txt file2.txt file3.txt # multiple files

讨论

  • fileinput处理打开文件的所有细节,为您逐行阅读
  • 您可以从命令行指定多个输入文件
  • 有关更多信息,请参阅文档,尤其是关于fileinput.filename(), fileinput.lineno(), ...
于 2013-03-08T23:19:17.943 回答
0

How do you read from stdin in Python?中介绍了如何处理 python 中的输入。

您输入的第一行可能是空白的,而您只阅读了一行,请尝试:

import sys
for line in sys.stdio:
    print line

我还应该提到 *nix 风格的实用程序模块 fileinput 值得一看。

于 2013-03-08T22:06:36.193 回答