流媒体和贝壳。琐碎的查询

时间:2015-05-04 05:00:05

标签: python

a.py 文件的内容为:

a = input()  
print(a)

fearless.txt 包含字符串: pink floyd。

现在,当我在命令提示符(windows)中输入%a.py < fearless.txt时,它会出现错误“lost.stdin”。

但是,当我输入%python a.py < fearless.txt时,不会发生错误。

我不明白这一点,因为.py是一个公认的扩展,由python运行。不应该,两者都是等价的吗? 注意我使用符号%代替实际目录 (Python版本:3.4.3:9b73f1c3e601和winXP-32位。)

2 个答案:

答案 0 :(得分:0)

这取决于.py文件的注册方式。它应该在py.exe启动器设置正确时起作用。您可以通过在注册表中查找以下密钥来验证这一点:HKEY_CLASSES_ROOT\Python.File\shell\open\command。默认值应为"C:\WINDOWS\py.exe" "%1" %*

您也可以尝试使用以下内容:

type fearless.txt | a.py

我刚刚注意到您使用的是Windows XP。您看到的问题可能是因为重定向的旧Windows错误。据说它在某些时候被修复,但也许XP仍然受到部分影响。我建议您无论如何都要更新系统,因为Microsoft不再支持Windows XP。

答案 1 :(得分:-1)

如果这是在Unix系统上(正如我猜的那样),你需要在文件顶部有一个shebang行告诉内核这是一个文件的内容需要由指定的解释器执行。 .py扩展名只是一个细节,不用于决定给定程序的“如何运行”。

当你尝试在没有shebang的情况下运行文件时,它正在由你当前的shell执行,这就是给你错误的原因。 Python甚至没有出现在图片中。