打印语句未在终端中显示

0 投票
3 回答
11107 浏览
提问于 2025-04-18 14:50

我最近开始玩scikit-learn,因为上学期的人工智能课让我很享受。我之前没有用过python(我们用的是WEKA),所以我设置了python3,并创建了一个虚拟环境,里面装了所有需要的包。我已经激活了这个虚拟环境,然后尝试通过 python3 <filename.py> 来运行下面的代码。

代码内容是:

from sklearn import svm, datasets
from numpy import genfromtxt, savetxt
import sys

def main():
    digits = datasets.load_digits()
    clf = svm.SVC(gamma=0.001, C=100.)
    clf.fit(digits.data[:-1], digits.target[:-1])  
    SVC(C=100.0, cache_size=200, class_weight=None, coef0=0.0, degree=3,
    gamma=0.001, kernel='rbf', max_iter=-1, probability=False,
    random_state=None, shrinking=True, tol=0.001, verbose=False)
    print(clf.predict(digits.data[-1]))
    sys.stdout.flush()

但是在iterm(一个mac os x的bash终端)里什么都没有打印出来。所以我又尝试运行了这段代码:

def main():
    print("hi", end='\n', file=sys.stdout, flush=True)

结果也没有任何输出。我查看了打印的文档,还问了一个只用过2.7版本的朋友,但还是没搞明白这是怎么回事。

3 个回答

0

我之前也遇到过类似的问题,跟几种不同的Python脚本都有关系。最后我通过检查代码的缩进来解决了这个问题。确保缩进正确就可以了。

1

你真的有运行这个main()函数吗?在上面的代码中,你定义了一个叫main()的过程,但你必须调用它才能让它做点什么。因为你是在终端上工作,只需输入main()然后按下[ENTER]键。

如果你是从文件中运行这个程序,那么@AndrewJohnson的回答是完全正确的。

5

你的 main() 函数有没有被调用过?试着在你的模块最后加上这个。

if __name__=="__main__":
    main()

撰写回答