ironstein
ironstein

Reputation: 547

Error running Python script from shell

I am trying to pipe output from a command written in the terminal to a Python script.

For example:

ls | ./foo.py

I wrote a Python script to do the same:

#foo.py
import fileinput

with fileinput.input() as f_input : 
    for line in f_input : 
        print(line,end='')

But this does not seem to work, when I run the following command:

$ ls | sudo ./foo.py

I get an error that says:

$ ./foo.py: command not found

I have checked the working directory and I can see the foo.py when I use the ls command, so what am I doing wrong here?

Upvotes: 0

Views: 1835

Answers (2)

Remi Guan
Remi Guan

Reputation: 22282

It seems like you forgot the Shebang:

#!/usr/bin/env python3
import fileinput

with fileinput.input() as f_input :
    for line in f_input :
        print(line,end='')

Also remember make it as executable via command:

chmod +x foo.py

Then run your command again.

Upvotes: 1

TigerhawkT3
TigerhawkT3

Reputation: 49318

You have to pipe it to the Python executable, not to the name of a file. As the error says, that filename doesn't represent a command it knows.

ls | py ./foo.py

Use py or python or however you run the Python interpreter on your particular system.

Upvotes: 1

Related Questions