从shell运行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 我得到一个错误,上面写着:

我正在尝试将终端中编写的命令的输出通过管道传输到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
我得到一个错误,上面写着:

$ ./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