I am new to python. As a part of my project, I am trying to create a linux command for the python file which I have already. For example I have a python file example.py,
with open('file.txt','r') as f: for i in f: print i with open('file.txt','r') as f: #for different reasons I am opening file again for i in f: print i
Here I am trying to make a command like
$example --print file.txt . Which means I am giving the input file from the command itself. Then it has to print the content of the input file. Please help me how to achieve this one. Thanks in advance.
You need to add the interpreter to the head of your script and also use the
sys.env to access the input parameters:
#!/usr/bin/python import sys, os; # check so we have enough arguments if len(sys.argv) < 2: printf "You need to supply at least two arguments." exit(-1) # check so the file exists if os.path.exists(sys.argv): # try to open the filename supplied in the second argument # the sys.argv always points to the name of the script with open(sys.argv, 'r') as f: for i in f: print i else: print 'The file %s does not exists' %(sys.argv)
Notice that you might need to change the
/usr/bin/python to the path where your python binary is installed. You can find out where it is by issuing the following command:
Now you should be able to run your command like this:
Notice, that here I assume that you are standing in the same folder as the python script. You could also move the script into a folder which is in your
$PATH environment variable so you could access it from everywhere. For instance you could move it to
mv command /usr/local/bin/.
You should then be able to run it from any folder using:
The last thing you need to do is to make sure the script is executable:
chmod +x command