passing values to a program

wittempj@hotmail.com martin.witte at gmail.com
Thu Oct 19 08:47:25 CEST 2006


Eric_Dexter at msn.com wrote:
> I almost have this thing running like I want it to run but I want
> the values to come from the program that calls this one.  There are two
> things I want to pass File_Name and CutString.  They both need to go to
> loadFile routine of Class WordGrid to replace constants.  Thank you for
> putting up with my quesitons in advance.
>
>
> import wx
> import wx.grid as gridlib
>
>
>
> #---------------------------------------------------------------------------
>
> class WordGrid(gridlib.Grid):
>     def __init__(self, parent, log):
>         gridlib.Grid.__init__(self, parent, -1)
>
>
>         self.loadFile()
>
>         self.CreateGrid(len(self.rows), self.widestRow)
>
>         for r, row in enumerate(self.rows):
>             for c, col in enumerate(row):
>                 self.SetCellValue(r, c, col)
>             self.SetColSize(c, 10*self.widestCol)
>
>         for c, label in enumerate(self.header):
>             self.SetColLabelValue(c, label)
>
>     def loadFile(self):
>        #from_file
>        infile = open('test.sco', 'r')
>        foundHeader = False
>        self.rows = []
>        for line in infile:
>            if ";<sco_header>" in line:
>                #removefirst = line.split(' ')
>                self.header = line.split()
>                #foundHeader = 'true'
>                continue     # we don't want to process this line any
> further
>            else:
>                self.rows.append(line.split())
>
>        self.widestRow = max([len(r) for r in self.rows])
>        self.widestCol = max([len(c) for c in [r for r in self.rows]])
>
>
>
> #---------------------------------------------------------------------------
>
> class TestFrame(wx.Frame):
>     def __init__(self, parent, log):
>         wx.Frame.__init__(self, parent, -1, "Simple Grid Demo",
> size=(640,480))
>         grid = WordGrid(self, log)
>
> #---------------------------------------------------------------------------
> #def main():
>
> def main(From_File, string):
>     import sys
>     From_file = argv[1]
>     #split_string = argv2[2]
>     app = wx.PySimpleApp()
>     frame = TestFrame(None, sys.stdout)
>     frame.Show(True)
>     app.MainLoop()
>     pass
>
> if __name__ == '__main__':
>     import sys
>     main('test.sco', 'sfd')
>
> http://www.dexrow.com

Try this code, save it in file called test.py

def main(From_File, string):
    print 'From_File: %s' % From_File
    print 'string: %s' % string

if __name__ == '__main__':
    import sys
    print 'command line'
    print sys.argv
    main(sys.argv[1], sys.argv[2])

    print 'hardcoded'
    main('test.sco', 'sfd')

H:\>test.py arg1 arg2
command line
['H:\\test.py', 'arg1', 'arg2']
From_File: arg1
string: arg2
hardcoded
From_File: test.sco
string: sfd

argv is in namespace sys, but you don't tell that. Also I would
consider using a none built in and less generic name for the argument
'string' you're using.




More information about the Python-list mailing list