运行 python 节目 linux

Running python program on linux

我对 linux 和 python 不是很熟悉。我正在使用这个 class,它在 python 上有一个倒排索引程序的示例代码。我想知道如何 运行 和测试代码。这是提供给我的代码。

这是映射文件的代码。 (inverted_index_map.py)

import sys
for line in sys.stdin:
    #print(line)
    key, value = line.split('\t', 1)
    for word in value.strip().split():
        if len(word) <=5 and len(word) >= 3:
          print '%s\t%s' % (word, key.split(':', 1)[0]) #what are we emitting?

这是reduce程序的代码。 (inverted_index_reduce.py)

import sys
key   = None
total = ''
for line in sys.stdin:
    k, v  = line.split('\t', 1)

    if key == k:
        total += v.strip() #what are we accumulating?
    else:
        if key:
            print '%s\t%s' % (key, total) #what are we printing?
        key   = k
        total = v

if key:
    print '%s\t%s' % (key, total) #what are we printing?

它不是可执行文件,所以我尝试了

chmod +x inverted_index_map.py

然后我尝试 运行 程序:

./inverted_index_map.py testfilename.txt

但我不确定程序是否正在等待来自键盘或其他东西的某种输入。所以我的问题是如何测试这段代码并查看结果? python.

我真的不熟

您需要使用 python 命令 运行 脚本来调用 python 解释器并将路径作为参数传递给您的脚本。看看这篇文章,我认为它会帮助你入门:

http://pythoncentral.io/execute-python-script-file-shell/

您需要像这样将文件作为标准输入传递

python inverted_index_map.py < testfilename.txt

或在 python 文件前加上 #!/usr/bin/python#!/usr/bin/env python 前缀,然后 chmod +x 就可以 运行

.\inverted_index_map.py < testfilename.txt

cat testfilename.txt | ./inverted_index_map.py

这是Writing an Hadoop MapReduce Program in Python推荐的。

这两个程序是作为命令行工具编写的,这意味着它们从 stdin 获取输入并将其显示到 stdout。默认情况下,这意味着它们从键盘获取输入并在屏幕上显示输出。在大多数 Linux shell 中,您可以通过使用 <file.txtfile.txt 获取输入并使用 >file.txt 将输出写入 file.txt 来更改输入的来源和输出的位置].此外,您可以使用 firstcommand | secondcommand.

使一个命令的输出成为另一个命令的输入

另一个问题是您发布的脚本没有 #! (shebang) 行,这意味着您将需要使用 python inverted_index_map.py 到 运行 您的程序。

如果你想 运行 inverted_index_map.py 使用来自 testfilename.txt 的输入并在屏幕上看到输出,你应该尝试 运行ning:

python inverted_index_map.py <testfilename.txt

至 运行 inverted_index_map.py 后跟 inverted_index_reduce.py,输入来自 testfilename.txt,输出写入 outputfile.txt,您应该尝试 运行ning :

python inverted_index_map.py <testfilename.txt | python inverted_index_reduce.py >outputfile.txt