Python Forum
Execute script in IDLE with parameters
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Execute script in IDLE with parameters
#1
Hello,
How to pass parameters while executing python script in IDLE environment ?
Thanks
Reply
#2
I don't believe that idle (which is not a very good IDE, even though it comes with python) has a mechanism to pass parameters from within the GUI, but you can emulate this by setting sys.argv.
Example:
>>> import sys
>>> 
>>> sys.argv = [sys.argv[0], '-a', '-b', '-c', 'myfile.txt']
>>> 
>>> print(sys.argv)
['', '-a', '-b', '-c', 'myfile.txt']
>>>
Reply
#3
I'm afraid of being misunderstood.
Here is how the concerned script is executed from command line:

python knn.py --dataset ../datasets/animals

Can I execute knn.py from IDLE and pass it parameter dataset ?
Reply
#4
You were understood perfectly fine and Larz gave you the only possible answer - IDLE is poor IDE and does not offer way to pass command line arguments when executing a script. Larz offered you a way to simulate it - by adding these lines you simulate as if there were command line arguments passed.
Of course it's better to use better IDE. I recommend VS Code, but there are plenty to choose from.

We have nice tutorial on VSCode
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#5
Well, probably I have to change for VSCode as you suggest.
But just to finish with IDLE ... is my comprehension of Larz approach correct if I proceed this way:

import sys
sys.argv = ['dataset', '../datasets/animals']
knn(sys.argv)

As I just saw VSCode is Visual Studio extension.
But I'm on Linux.
Reply
#6
Please, use proper tags when post code, traceback, output, etc. This time I have added tags for you.
See BBcode help for more info.

no, you should add

import sys
sys.argv = [sys.argv[0], '--dataset', '../datasets/animals']
The first element of sys.argv is always the script itself
the best would be to add the import statement at the top of the file and the other line as first line in if __name__ == '__main__': block. Note that this may vary little depending how your knn.py looks like.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#7
VSCode is not Visual Studio extension. It's a separate IDE from Visual Studio. There is indeed Python extension for Visual Studio, but that's not it.

https://code.visualstudio.com/

Look also at our tutorial. Many of us are on Linux or both Linux and Windows and use it on Linux.


Here is the GitHub repo for the extension and this is the GitHub repo for VSCode
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#8
Quote:This time I have added tags for you
Ok, sorry for that.
Returning to the issue, is this sequence of commands (typing in IDLE) correct (without modifying knn.py)

import sys
sys.argv = [sys.argv[0], '--dataset', '../datasets/animals']
knn(sys.argv)
Concerning IDLE alternative for Linux ... probably PyCharm ?

Quote:VSCode is not Visual Studio extension. It's a separate IDE from Visual Studio. There is indeed Python extension for Visual Studio, but that's not it.
Ok, I did not notice this message before posting the mine.
Nevertheless which is better in your opinion (sorry for this probably stupid question) - VSCode or PyCharm ?
Reply
#9
without knn(sys.argv) you don't need it. And again - if you put it at the top it will work, but if your knn.py is properly structured, the second line should go in 'if __name__ == '__main__': block
(Mar-13-2020, 08:47 AM)Pavel_47 Wrote: Concerning IDLE alternative for Linux ... probably PyCharm
did you read my second post? I used PyCharm in the past, but currently using VSCode on both Linux and Windows and I like it very much. PyCharm is too heavy compared to VSCode. For third time - look at the tutorial.
Of course it's up to you. There are people that use PyCharm for one reason or another.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#10
Expanding just a little - I suggest you might install Anaconda3. That includes VSCode, another IDE that you might try called Spyder, as well as Jupyter Lab and Jupyter Notebook, among others. You can create environments and see what works best for you. Multi-platform, I have it on my Windows and Linux machines and it works pretty much the same.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to receive two passed cmdline parameters and access them inside a Python script? pstein 2 278 Feb-17-2024, 12:29 PM
Last Post: deanhystad
  execute python script guy7200 1 1,574 Oct-25-2021, 09:55 PM
Last Post: Axel_Erfurt
  Possible to execute a python script before log off/shutdown with input commands? Kaltex 1 2,235 May-18-2021, 06:31 AM
Last Post: Skaperen
  Automating to run python script 100 times by changing parameters pmt 1 2,562 Dec-29-2020, 10:31 AM
Last Post: andydoc
  Execute DBCC CHECKDB from python script susja 1 2,062 Aug-12-2020, 02:09 AM
Last Post: susja
  Execute full script samuelbachorik 0 1,514 Aug-06-2020, 08:09 PM
Last Post: samuelbachorik
  Trying to write and execute first Python script garvind25 3 2,847 May-23-2020, 07:36 PM
Last Post: garvind25
  How to write a script to execute a program need passing additional input? larkypython 2 2,471 Nov-23-2019, 04:38 AM
Last Post: larkypython
  Pyinstaller with Sys.Argv[] - “Failed to Execute Script”? ironfelix717 0 5,257 Aug-07-2019, 02:29 PM
Last Post: ironfelix717
  Help with PyInstaller + Script "Failed to Execute Script" ironfelix717 2 9,514 Jul-31-2019, 02:18 PM
Last Post: ironfelix717

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020