Reputation: 699
I have Python function that takes 1 arguments
def build_ibs(Nthreads,LibCfg): # Nthreads is int,LibCfg as string
import os # module os must be imported
import subprocess
import sys
I use following in cmd.exe(on Win7) to call it
C:>cd C:\SVN\Python Code
C:\SVN\Python Code>C:\Python27\python.exe build_libs(4,'Release')
that throws error
using following
C:>cd C:\SVN\Python Code
C:\SVN\Python Code>C:\Python27\python.exe 4 'Release' # dosn't work
C:\SVN\Python Code>C:\Python27\python.exe 4 Release # dosn't work
does nothing, and no error is displayed even.
What is the correct way to call it both in cmd.exe or even Python shell command line?
Thanks
sedy
Upvotes: 0
Views: 446
Reputation: 7700
You can't just call a function from the command line - it must be inside a file. When you type python filename.py
at the command line, what it does is feed the contents of filename.py
into the Python interpreter with the namespace set to __main__
.
So when you type Python.exe 4 'Release'
it tries to find a file named 4
. Since this file does not exist, Windows returns an Errno 2 - File not found.
Instead, put your code into a file - lets say test.py:
test.py:
def build_libs(Nthreads,LibCfg): # Nthreads is int,LibCfg as string
import os # module os must be imported
import subprocess
import sys
# ...
if __name__=='__main__':
numthreads = sys.argv[1] # first argument to script - 4
libconfig = sys.argv[2] # second argument
# call build_libs however you planned
build_libs(numthreads, libconfig)
Then run from the command line:
C:\Python27\python.exe test.py 4 Release
In the directory that test.py is saved in.
Update: If you need to use build_libs
in multiple files, it's best to define it in a module, and then import it. For example:
mod_libs/__init__.py - empty file
mod_libs/core.py:
def build_libs(...):
....
# function definition goes here
test.py:
import sys
import mod_libs
if __name__ == '__main__':
mod_libs.build_libs(sys.argv[1], sys.argv[2])
Upvotes: 1
Reputation: 49330
sys.argv
or argparse
).For example:
C:\SVN\Python Code> py
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:16:31) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import build_libs
>>> build_libs.build_libs(4, 'Release')
Or, in your build_libs.py
, import the sys
module at the top of the script, and then run the function based on its arguments at the end of the script:
import sys
...
print(build_libs(int(sys.argv[1]), sys.argv[2]))
Then at your OS's command line:
C:\SVN\Python Code> py build_libs 4 Release
Upvotes: 0