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位。)
答案 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甚至没有出现在图片中。