将函数结果写入标准输入

新手上路,请多包涵

我正在尝试将函数的结果写入标准输入。

这是代码:

 def testy():
    return 'Testy !'

import sys
sys.stdin.write(testy())

我得到的错误是:

 Traceback (most recent call last):
  File "stdin_test2.py", line 7, in <module>
    sys.stdin.write(testy())
io.UnsupportedOperation: not writable

我不完全确定,这是正确的做事方式吗?

原文由 m_vdbeek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 399
2 个回答

您可以使用类似文件的对象模拟 stdin 吗?

 import sys
import StringIO

oldstdin = sys.stdin
sys.stdin = StringIO.StringIO('asdlkj')

print raw_input('.')       #  .asdlkj

原文由 Pavel Anossov 发布,翻译遵循 CC BY-SA 3.0 许可协议

我在谷歌上搜索自己如何做到这一点并弄清楚了。对于我的情况,我从 hackerrank.com 获取一些样本输入并将其放入一个文件中,然后希望能够将所述文件用作我的 stdin ,这样我就可以编写一个可以轻松实现的解决方案复制/粘贴到他们的 IDE 中。我使我的 2 个 python 文件可执行,添加了 shebang。第一个读取我的文件并写入 stdout

 #!/Users/ryandines/.local/share/virtualenvs/PythonPractice-U9gvG0nO/bin/python
# my_input.py
import sys

def read_input():
    lines = [line.rstrip('\n') for line in open('/Users/ryandines/Projects/PythonPractice/swfdump')]
    for my_line in lines:
        sys.stdout.write(my_line)
        sys.stdout.write("\n")

read_input()

第二个文件是我为解决编程挑战而编写的代码。这是我的:

 #!/Users/ryandines/.local/share/virtualenvs/PythonPractice-U9gvG0nO/bin/python
def zip_stuff():

    n, x = map(int, input().split(' '))
    sheet = []

    for _ in range(x):
        sheet.append( map(float, input().split(' ')) )

    for i in zip(*sheet):
        print( sum(i)/len(i) )

zip_stuff()

然后我使用操作系统的管道命令来提供STDIN的缓冲。与 hackerrank.com 完全一样,所以我可以轻松地剪切/粘贴示例输入以及我的相应代码,而无需更改任何内容。像这样称呼它: ./my_input.py | ./zip_stuff.py

原文由 Ryan Dines 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题