我想为python代码编写一个.bat包装器,它可以处理参数和管道输入。参数不是问题,但我一旦尝试管道输入,就失去了使用原始输入查询用户和/或引起eoferor的能力。下面是一个例子,我们称之为测试.bat。我可以对下面的脚本做些什么来让它同时处理管道输入和参数输入?在
[编辑]感谢Harry Johnston的建议,请参阅下面的代码,了解如何通过管道和参数获取用户输入的可靠方法!在
@echo off
rem = """
setlocal enableextensions
set PYTHON="C:/Python27/python.exe"
%PYTHON% -x "%~f0" %*
goto endofPython """
import os, stat, sys
# This effectively replaces raw_input()
def workaround(message):
while True:
sys.stdout.write(message)
answer = ''
with open('CON') as console:
answer = console.readline().lower().strip()
if answer == 'y' or answer == 'yes':
return True
elif answer == 'n' or answer == 'no':
return False
mode = os.fstat(0).st_mode
if stat.S_ISFIFO(mode) or stat.S_ISREG(mode):
print
if workaround("Print STDIN? ([Y]es,[N]o)"):
print
print
for x in sys.stdin:
print 'STDIN: %s'%x.strip()
if sys.argv[1:]:
print
if workaround("Print ARGV? ([Y]es,[N]o)"):
print
for x in sys.argv[1:]:
print 'ARGV : %s'%x
rem = """
:endofPython """
在Windows上,可以使用
open('CON')
创建一个文件对象,用于从控制台读取数据(即绕过标准输入重定向)。在相关问题 更多 >
编程相关推荐