运行 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 解释器并将路径作为参数传递给您的脚本。看看这篇文章,我认为它会帮助你入门:
您需要像这样将文件作为标准输入传递
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
这两个程序是作为命令行工具编写的,这意味着它们从 stdin 获取输入并将其显示到 stdout。默认情况下,这意味着它们从键盘获取输入并在屏幕上显示输出。在大多数 Linux shell 中,您可以通过使用 <file.txt
从 file.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
我对 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 解释器并将路径作为参数传递给您的脚本。看看这篇文章,我认为它会帮助你入门:
您需要像这样将文件作为标准输入传递
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
这两个程序是作为命令行工具编写的,这意味着它们从 stdin 获取输入并将其显示到 stdout。默认情况下,这意味着它们从键盘获取输入并在屏幕上显示输出。在大多数 Linux shell 中,您可以通过使用 <file.txt
从 file.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