从shell运行Python脚本时出错
我正在尝试将终端中编写的命令的输出通过管道传输到Python脚本 例如:从shell运行Python脚本时出错,python,terminal,Python,Terminal,我正在尝试将终端中编写的命令的输出通过管道传输到Python脚本 例如: ls | ./foo.py 我编写了一个Python脚本来执行同样的操作: #foo.py import fileinput with fileinput.input() as f_input : for line in f_input : print(line,end='') 但这似乎不起作用, 当我运行以下命令时: $ ls | sudo ./foo.py 我得到一个错误,上面写着:
ls | ./foo.py
我编写了一个Python脚本来执行同样的操作:
#foo.py
import fileinput
with fileinput.input() as f_input :
for line in f_input :
print(line,end='')
但这似乎不起作用,
当我运行以下命令时:
$ ls | sudo ./foo.py
我得到一个错误,上面写着:
$ ./foo.py: command not found
我已经检查了工作目录,当我使用
ls
命令时,我可以看到foo.py
,那么我在这里做错了什么呢?您必须将它传输到Python可执行文件,而不是文件名。正如错误所说,该文件名并不表示它知道的命令
ls | py ./foo.py
使用
py
或python
或在特定系统上运行python解释器。您似乎忘记了:
还请记住,通过以下命令将其设置为可执行文件:
chmod +x foo.py
然后再次运行命令。@ironstein:
env
是一个命令,它可以自动搜索路径
并运行python3
。然后,由于它是Shebang,系统将使用python3
运行脚本,而不是bash
。有关详细信息,请尝试env--help
。
chmod +x foo.py