gpt4 book ai didi

Python:期望一个缩进 block

转载 作者:行者123 更新时间:2023-12-02 22:00:38 24 4
gpt4 key购买 nike

我正在尝试使用 mapreduce 运行 2 个 python 程序,并且每当我运行它们时都会出现错误。以下是 2 个文件的代码。它一直告诉我,两个程序的 main(sys.argv) 命令中都会出现缩进 block 错误。任何指导都会受到赞赏。

映射器.py

#!/usr/bin/env python
#Be sure the indentation is identical and also be sure the line above this is on the first line

import sys
import re

def main(argv):
line = sys.stdin.readline()
pattern = re.compile("[a-zA-Z0-9]+")
while line:
for word in pattern.findall(line):
print(word+"\t"+"1")
line = sys.stdin.readline()
#Note there are two underscores around name and main
if __name__ == "__main__":
main(sys.argv)

reducer .py
#!/usr/bin/env python
#Be sure the indentation is correct and also be sure the line above this is on the first line

import sys

def main(argv):
current_word = None
current_count = 0
word = None
for line in sys.stdin:
line = line.strip()
word, count = line.split('\t', 1)
count = int(count)
if current_word == word:
current_count += count
else:
if current_word:
print('%s\t%s' % (current_word, current_count))
current_count = count
current_word = word
if current_word == word:
print('%s\t%s' % (current_word, current_count))

#Note there are two underscores around name and main
if __name__ == "__main__":
main(sys.argv)

错误信息:
[maria_dev@sandbox-hdp ~]$ python reducer.py                                                                                                                                                                       
File "reducer.py", line 25
main(sys.argv)
^
IndentationError: expected an indented block

映射器文件示例 Mapper.py

最佳答案

if __name__ == "__main__":
# some
# commands
# doing
# stuff

这是编写库时使用的 Python 中一个不错的小“技巧”​​。当你 import一个你通常只想导入类和函数但不想执行示例代码的库。当您将库文件作为独立脚本执行时,这是不同的。当您这样做时,您会期望输出一些关于如何使用该库的示例。在 Python 中,这是通过 if __name__ == "__main__": 实现的。 . __name__是一个包含特定于当前文件的字符串的变量。对于主文件,这个字符串总是值 "__main__"所以这是判断文件是执行的主文件还是只是某个库的简单方法。

主要问题是缩进。 Python 只能通过缩进告诉逻辑代码块(例如函数定义、if 子句或循环的主体)。如果 Python 告诉你有一个 IndentationError ,那么格式错误的代码很可能是原因。如果您混合使用制表符和空格,也可能会引发此错误,因此请小心避免这种情况。黄金标准是缩进 4 个空格,而不是制表符。

此外,使用 if __name__ == "__main__":在缩进的上下文中几乎没有意义。完全删除该 block (如果您只将这些文件用作库)或取消缩进它是相当节省的,因此 if完全不缩进,if 子句的主体缩进 4 个空格。

关于Python:期望一个缩进 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52359261/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com