Rafael
Rafael

Reputation: 3111

How to pass parameters to a build in Sublime Text 3?

I'm currently making a program (which requires some arguments) that runs on the terminal.

Now I would like to run this same program from Sublime Text, but I don't know how to pass parameters to the build before executing the program in Sublime Text.

Is there any option that I need to enable to specify the arguments?

Using Sublime Text 3 build 3035

Upvotes: 13

Views: 19894

Answers (3)

Michaela Tobler
Michaela Tobler

Reputation: 1

The simplest solution is to import sys and to add to his list sys.argv the list of args you need.

Example:

#!/usr/bin/env python3

#-*- coding: utf-8 -*-

import numpy as np

#############here your python script

#at the end :

import sys

arglist=["Am Brunnen vor dem Tore",

"Da steht ein Lindenbaum",

"Ich träumt' in seinem Schatten",

"So manchen süßen Traum"] 

# append one arg or a list :

sys.argv.append(arglist)

#thats ALL.. as you see, sublime isn't involved, use it on any IDE.. 


if __name__ == "__main__" :

    import fire

    fire.Fire(main)

Upvotes: 0

michaelkrisper
michaelkrisper

Reputation: 757

You can create a new build system for sublime text and run your script with fixed arguments.

Create a new File in your Packages/User directory (CTRL-SHIFT-P --> "Browse Packages")

New File: Packages/User/my_build.sublime-build

with the following content:

{
   "cmd": ["python", "$file", "arg1", "arg2"]
}

(replace arg1,arg2 by your arguments - you can delete them or add more if you want)

Now restart sublime text and select your build system in the Menu: Tools --> Build System --> my_build. From now on, when you press CTRL-B your build system will be executed.

Don't forget to change it back to "Automatic" if you are working on other files or projects.

There are many options you can set in build files. Please refer to https://docs.sublimetext.io/guide/usage/build-systems.html

Upvotes: 17

Kieran Inductance D
Kieran Inductance D

Reputation: 154

I find it easier to use a try catch with default arguments, Sublime's build system becomes annoying to manage. While you do fast paced dev you can just modify the arguments in the except statement.

import sys
try:
    if sys.argv[1]:
        Name = str(sys.argv[1])

except:
    print "no argument given - using DERP"
    Name = "DERP"

Upvotes: 10

Related Questions