从命令lin读取时,Python参数在<

2024-04-25 08:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到了一个脚本,该脚本应该花费执行python-脚本所需的时间。为了简单起见,我只在命令行中提供了我想要作为参数执行的实际命令。你知道吗

假设我打电话:

python time.py python ratatosk.py < input.txt

在这里,python time.py之后的所有内容都是我要执行的实际命令。你知道吗

但是,当使用以下命令读取sys.argv时:

print 'Number of arguments:', len(sys.argv), 'arguments.'
print 'Argument List:', str(sys.argv)

它只返回:

Number of arguments: 3 arguments.
Argument List: ['time.py', 'python', 'ratatosk.py']

剩下的争论都到哪里去了?它看起来像是<不知怎的把它剥掉了。你知道吗

我正在MacBookPro上运行Python 2.7.3(v2.7.3:70274d53c1dd,2012年4月9日,20:52:43)。你知道吗


Tags: ofpy命令脚本numbertimesys时间
3条回答

您需要避开<;标志。 尝试呼叫:

python time.py python ratatosk.py \< input.txt

最好使用与<;不同的字符,以便运行此命令更容易

对于UNIX Shell,符号“<;”被认为是重定向。这意味着标准输入将来自一个文件输入.txt在磁盘上。你知道吗

由于符号是特殊的,shell将转换指定的命令,而到达内核的是一个不包含“<;”的已修改命令。你知道吗

您可以通过在“<;”之前添加\来转义它,这样它就不会作为shell的特殊字符出现,并最终作为系统参数传递给程序。你知道吗

你遇到了shell redirection

<字符对shell有特殊的意义。它将导致被调用的程序从后面的内容而不是默认的stdin(通常是键盘)读取。你知道吗

Python只关心从stdin读取数据,而不管它来自哪里。它不应该出现在sys.argv。你知道吗

在您的示例中,input.txt很可能是用户向您的程序中输入数据的替代品,并且您的用法是正确的。你知道吗

下面是一个简短的例子:

回音.py

text = raw_input()
print text

输入文件

hello from the file

示例运行

$ python echo.py 
hello from the keyboard
hello from the keyboard
$ python echo.py < input.txt
hello from the file

相关问题 更多 >