使用 python 输入重定向

2024-01-05

我有以下程序来测试 Python 中的输入重定向。

a = int(raw_input("Enter a number: "))
b = raw_input("Enter a string: ")
print "number entered = ", a
print "string entered = ", b

如果我在没有重定向的情况下运行该程序,输入和输出如下所示:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered =  sample

现在,为了测试输入重定向,我有一个名为 a.txt 的文件,其中包含:

100
sample

但是,当我使用从 a.txt 重定向的输入(如下所示)运行时,我的输入和输出会出现乱码。

python doubt02.py < a.txt
Enter a number: Enter a string: number entered =  100
string entered =  sample

请建议我是否有更好的替代方案(使用输入重定向),如下所示:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered =  sample

您本质上希望将标准输入连接到标准输出:

import sys

class Tee(object):
    def __init__(self, input_handle, output_handle):
        self.input = input_handle
        self.output = output_handle

    def readline(self):
        result = self.input.readline()
        self.output.write(result)

        return result

if __name__ == '__main__':
    if not sys.stdin.isatty():
        sys.stdin = Tee(input_handle=sys.stdin, output_handle=sys.stdout)

    a = raw_input('Type something: ')
    b = raw_input('Type something else: ')

    print 'You typed', repr(a), 'and', repr(b)

The Tee类只实现什么raw_input用途,因此不能保证它适用于其他用途sys.stdin.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 python 输入重定向 的相关文章

随机推荐

  • 如何从代码中删除缩进?

    让我们考虑这个代码示例 不要看代码 而要看缩进 protected function hashPassword password salt nuts if nuts nuts Kohana config a11n gt nuts passw
  • 在完整树的深度优先和广度优先遍历之间转换的函数

    问题 考虑一棵具有 l 层的完整 k 叉树 节点在广度优先遍历中按其等级标记 按照深度优先遍历中遍历标签的顺序计算标签列表 例如 对于 3 层的二叉树 所需的列表为 0 1 3 7 8 4 9 10 2 5 11 12 6 13 14 一种
  • 如何在 C++ 中构造 ISO 8601 日期时间?

    我正在使用 Azure REST API 他们使用它来创建表存储的请求正文 DateTime UtcNow ToString o 其产生 2012 03 02T04 07 34 0218628Z 它被称为 往返 显然它是一个 ISO 标准
  • 在哪里可以找到 php_svn.dll [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我最近升级到 Windows 版 PHP 5 3 5 我在以前的版本中使用了 subversion 扩
  • 时间序列数据框 python 上的 ARIMA 建模

    我正在尝试使用 ARIMA 模型进行预测 我是新手 我试图绘制我的数据集 每小时数据 的seasonal decompose 下面是图 我想理解这些情节 简短的描述会有帮助 我看到最初没有趋势 一段时间后有上升趋势 我不确定我说的对吗 我想
  • Ruby 中的排序稳定吗?

    Is sort在 Ruby 中稳定吗 也就是说 对于并列的元素sort 它们之间的相对顺序是否保留了原始顺序 例如 给定 a id a int 3 id b int 1 id c int 2 id d int 0 id e int 1 id
  • 如何在Hadoop中自定义Writable类?

    我正在尝试实现可写类 但我不知道如果我的类中有嵌套对象 例如列表等 如何实现可写类 任何人都可以帮助我吗 谢谢 public class StorageClass implements Writable public String xStr
  • 处理时出现用户级 KeeperException

    我知道这已经是之前问过 https stackoverflow com questions 30495057 zookeeper having keeperexception but kafka able to create topics
  • php 按值字母顺序对数组进行排序

    正如标题所示 我想在 php 中按字母顺序对数组进行排序 arr array k gt pig e gt dog 会成为 arr array e gt dog k gt pig 有任何想法吗 编辑 这是我想要排序的实际数组 Array 0
  • 匿名 lambda 直接引用自身

    cheme 或 doscheme 的任何方言是否都有一种 self 运算符 以便匿名 lambda 可以自行重复 而无需执行类似 Y 组合器或在 letrec 等中命名的操作 就像是 lambda n cond n 0 1 else n s
  • 为什么 goto 在 Java 和其他高级编程语言中被认为是邪恶的? [复制]

    这个问题在这里已经有答案了 可能的重复 java中有goto语句吗 https stackoverflow com questions 2545103 is there a goto statement in java 为什么 goto 在
  • 运行“dotnet test”时显示“dotnet vstest”输出接收器的输出

    Edit 以下是最初以标题发布的前一个问题 xunit 在控制台中运行时显示 ITestOutputHelper 输出 经过调查 见评论 这个问题仍然非常相关 需要答案 但似乎应该向vstest框架和输出接收器而不是 xunit 现在的具体
  • 在 Chart.js 中设置每个标签的特定颜色

    我正在尝试为使用制作的图表设置颜色chart js https www chartjs org 图书馆 我需要为每个数据标签指定特定的颜色 但是当特定标签的数据为零时 颜色会变得混乱 看起来该库删除了零数据标签和不同颜色的标签 例如 当数据
  • 具有 Overrideredirect 和全屏功能的 Tkinter Entry 小部件

    我希望这不是重复的帖子 但我还没有在谷歌和论坛上看到我的问题的答案 基本上由于某种原因 当我创建一个 Entry 小部件时 当我通过 self attributes fullscreen True 将 GUI 设置为全屏时以及启用 self
  • 通过添加标准基向量来构造满秩矩阵

    我有一个 nxn 奇异矩阵 我想向该矩阵添加 k 行 必须来自标准基础 e1 e2 en 以便新的 n k xn 矩阵具有完整的列秩 添加的行数 k 必须是最小的 并且可以以任何顺序添加 不仅仅是 e1 e2 还可以是 e4 e10 e1
  • 作为 Windows 服务运行时,如何增加 Tomcat 7 上的内存?

    我正在尝试将 Tomcat 7 作为 Windows 服务 XP 和 Windows 7 运行 我在 catalina bat 中看到设置 Xmx 和 Xms jvm 参数的位置 但我不确定在使用 CATALINA HOME bin ser
  • 通过 C# 向 Lotus Notes 8.5 客户端发送预约邀请

    我正在使用 Interop Domino dll 并能够通过 C 代码向 Lotus Notes 8 5 用户发送邮件 现在我想通过 C 代码向用户发送约会邀请 这是我的代码 oNotesDocument ReplaceItemValue
  • 如何将 MAC 数字转换为 MAC 字符串?

    我想将 MAC 地址 00163e2fbab7 存储为字符串 转换为其字符串表示形式 00 16 3e 2f ba b7 做到这一点最简单的方法是什么 使用完全迂回的方法来利用一次对两个十六进制字符进行分组的现有函数 gt gt gt jo
  • iPhone 应用程序显示名称

    如果我有一个名为 MyCoolApp 的 iPhone 应用程序 如何保留名为 MyCoolApp app 的捆绑包 但我的图标下方显示的应用程序名称为 My Cool App 我已将 PRODUCT NAME 目标设置更改为 My Coo
  • 使用 python 输入重定向

    我有以下程序来测试 Python 中的输入重定向 a int raw input Enter a number b raw input Enter a string print number entered a print string e