为什么python不将输出发送到stdout?

时间:2018-02-10 00:03:23

标签: python output stdout python-3.5

这是最小工作示例(MWE),保存为mwe.py

import sys

def f(n):
    print("Testing print()...")
    sys.stdout.write("Calculating f({})...".format(n))

从命令行运行时,我得不到任何输出:

username@hostname:~/mydir$ python mwe.py 'f(99)'
username@hostname:~/mydir$ 

python内部开始运行 我得到输出(删除了一些信息):

username@hostname:~/mydir$ python
Python 3.5.4 (default, DATE, HH:MM:SS)
[GCC X.X.X Compatible Apple LLVM X.X.X (clang-X.X.X)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mwe import f
>>> f(99)
Testing print()...
Calculating f(99)...
>>>

为什么这些输出语句在命令行中python

2 个答案:

答案 0 :(得分:5)

python mwe.py 'f(99)'并不意味着“使用参数fmwe.py运行99函数”。如果您想从命令行执行此操作,则可以执行

python -c 'import mwe; mwe.f(99)'

python mwe.py 'f(99)'表示“运行脚本mwe.py并将sys.argv[1]设置为字符串"f(99)"”。脚本mwe.py不会检查sys.argv或打印任何内容;它只是定义一个函数并结束。

答案 1 :(得分:1)

这:python mwe.py 'f(99)'不应该工作。在这种情况下,'f(99)'只是作为参数传递给程序。

请尝试使用python -c 'import mwe; mwe.f(99)。 (还可以通过键入python -h

来阅读有关python命令行用法的更多信息