Need to write python source with python

C

crstop

Hi All,

I'm new to Python but have experience with a few other programming languages(Java, Perl, JavaScript).

I'm using Python 2.7.2 and I'm trying to create and write to a file (.py) apython class and functions from python. I will also need to later read andedit the file. I realize I could just write strings using the available string and file writing methods but suspect there is a better way than that.

I have read about pickle, ast, and Django; searched this group and the web but haven't found a solution that seems to fit. Any suggestion?
 
P

Peter Otten

I'm new to Python but have experience with a few other programming
languages(Java, Perl, JavaScript).

I'm using Python 2.7.2 and I'm trying to create and write to a file (.py)
a python class and functions from python. I will also need to later read
and edit the file. I realize I could just write strings using the
available string and file writing methods but suspect there is a better
way than that.

I have read about pickle, ast, and Django; searched this group and the web
but haven't found a solution that seems to fit. Any suggestion?

Due to Python's dynamic nature it is rarely necessary to generate Python
code. What are you actually trying to achieve?
 
8

88888 Dihedral

在 2012å¹´2月29日星期三UTC+8上åˆ1æ—¶56分43秒,Peter Otten写é“:
Due to Python's dynamic nature it is rarely necessary to generate Python
code. What are you actually trying to achieve?

Check myHDL, and BOA and pythoncard that can translate user messages
to pyhton code as delphie.
 
C

crstop

Due to Python's dynamic nature it is rarely necessary to generate Python
code. What are you actually trying to achieve?

I'm trying to generate the script file that will launch a PythonCard resource file.

very basic example from the documentation.

#!/usr/bin/python
"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):
pass

if __name__ == '__main__':
app = model.Application(Minimal)
app.MainLoop()
 
C

crstop

Due to Python's dynamic nature it is rarely necessary to generate Python
code. What are you actually trying to achieve?

I'm trying to generate the script file that will launch a PythonCard resource file.

very basic example from the documentation.

#!/usr/bin/python
"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):
pass

if __name__ == '__main__':
app = model.Application(Minimal)
app.MainLoop()
 
P

Peter Otten

I'm trying to generate the script file that will launch a PythonCard
resource file.

very basic example from the documentation.

#!/usr/bin/python
"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):
pass

if __name__ == '__main__':
app = model.Application(Minimal)
app.MainLoop()

If it doesn't get too complex you could start with Python's built-in string
formatting:

import sys

template = '''\
#!/usr/bin/python
from PythonCard import model

class {Class}(model.Background):
pass

if __name__ == '__main__':
app = model.Application({Class})
app.MainLoop()
'''

resourcename, filename = sys.argv[1:]

with open(resourcename, "U") as f:
data = eval(f.read())

with open(filename, "w") as f:
f.write(template.format(Class=data["application"]["name"]))

If you need logic inside the template, here's on overview:

http://wiki.python.org/moin/Templating

So there are rather too many options than too few.
 
C

crstop

I'm trying to generate the script file that will launch a PythonCard
resource file.

very basic example from the documentation.

#!/usr/bin/python
"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):
pass

if __name__ == '__main__':
app = model.Application(Minimal)
app.MainLoop()

If it doesn't get too complex you could start with Python's built-in string
formatting:

import sys

template = '''\
#!/usr/bin/python
from PythonCard import model

class {Class}(model.Background):
pass

if __name__ == '__main__':
app = model.Application({Class})
app.MainLoop()
'''

resourcename, filename = sys.argv[1:]

with open(resourcename, "U") as f:
data = eval(f.read())

with open(filename, "w") as f:
f.write(template.format(Class=data["application"]["name"]))

If you need logic inside the template, here's on overview:

http://wiki.python.org/moin/Templating

So there are rather too many options than too few.

It shouldn't get very complicated so I look through those options.

Thanks to all posters
 
C

crstop

I'm trying to generate the script file that will launch a PythonCard
resource file.

very basic example from the documentation.

#!/usr/bin/python
"""
__version__ = "$Revision: 1.10 $"
__date__ = "$Date: 2004/04/24 22:13:31 $"
"""

from PythonCard import model

class Minimal(model.Background):
pass

if __name__ == '__main__':
app = model.Application(Minimal)
app.MainLoop()

If it doesn't get too complex you could start with Python's built-in string
formatting:

import sys

template = '''\
#!/usr/bin/python
from PythonCard import model

class {Class}(model.Background):
pass

if __name__ == '__main__':
app = model.Application({Class})
app.MainLoop()
'''

resourcename, filename = sys.argv[1:]

with open(resourcename, "U") as f:
data = eval(f.read())

with open(filename, "w") as f:
f.write(template.format(Class=data["application"]["name"]))

If you need logic inside the template, here's on overview:

http://wiki.python.org/moin/Templating

So there are rather too many options than too few.

It shouldn't get very complicated so I look through those options.

Thanks to all posters
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,527
Members
45,000
Latest member
MurrayKeync

Latest Threads

Top