John Machin wrote: > [EMAIL PROTECTED] wrote: > > I am writing out zero byte files with this (using python 2.5). I have > > no idea why I am having that problem > > Which output file(s) do you mean, temp.orc or temp.sco or both? > Two possible causes outlined below. > > > I am also looking for an example > > of readlines where I can choose a number of lines say lines 12 to 14 > > and then write them back to disk. > > To the same file? There was a long thread on updating text files very > recently. > > > any help would be apreaceted. > > Have you considered deploying a spelling checker? > > > > > import sys as sys2 > > import os as os2 > > Why the obfuscation? > > > > > def playscoreinrange(from_file, fromline, toline): > > "untested way to play a series of lines from a orc, sco combination > > line 14 may not be correct" > > and which is line 14?? According to my count, it is the blank line > after "outfile2 = open('temp.orc', 'w') "!! > > > print(from_file) > > fromfile = os2.path.basename(from_file) > > print(fromfile) > > > > orcfilename = fromfile[:-4] + '.orc' > > print(orcfilename) > > infile2 = open(orcfilename, 'r') > > outfile2 = open('temp.orc', 'w') > > > > for line in infile2: > > outfile2.write(line) > > > > > > infile = open(fromfile, 'r') > > infile is not used > > > outfile = open('temp.sco','w') > > > > data = sys2.stdin.readlines() > > print(data) > > and how many lines were there in data when you printed it? > > > for linenumber in range(fromline, toline): > > Consider the possibility that fromline >= toline (which may be caused > by either or both not being of a numerical type). > > Did you mean range(fromline, toline + 1) ? > > do this: > print repr(fromline), type(fromline) > print repr(toline), type(toline) > > BTW, print is a *statement*, not a function! > > > outfile.writeline(data[linenumber]) > > outfile.writeline() ??? > > | Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit > (Intel)] on win > 32 > | Type "help", "copyright", "credits" or "license" for more > information. > | >>> f = open('fubar.txt', 'w') > | >>> f.writeline('bzzzzt!\n') > | Traceback (most recent call last): > | File "<stdin>", line 1, in <module> > | AttributeError: 'file' object has no attribute 'writeline' > > So, the body of your loop wasn't executed (or you overlooked the > exception, or that wasn't the code that was executed) -- so it looks > like the range was empty (or the problem occurred further upstream). > > > https://sourceforge.net/projects/dex-tracker > > http://www.dexrow.com > > > > > > os2.startfile('temp.bat') > > and what does this do?? Read temp.orc and/or temp.sco before you've > closed the file(s)? > > Where is the code that was used to call this playscoreinrange function? > > HTH, > John
temp bat is csound temp.orc temp.sco and it plays the new files I can try closing the other files first. I am sure the readlines code is crashing it. Because I have moved it befour the code that is reading a line at a time and it would not even write the second zero byte file. The comment line is an old line that I did not update when I made changes. The code that calls it was auto-generated but boa-constructer .44 (I haven't updated it yet). #Boa:Dialog:Dialog2 import wx import csoundroutines2 def create(parent): return Dialog2(parent) [wxID_DIALOG2, wxID_DIALOG2BUTTON1, wxID_DIALOG2STATICTEXT1, wxID_DIALOG2STATICTEXT2, wxID_DIALOG2TEXTCTRL1, wxID_DIALOG2TEXTCTRL2, ] = [wx.NewId() for _init_ctrls in range(6)] class Dialog2(wx.Dialog): From_File = '' def _init_ctrls(self, prnt): # generated method, don't edit wx.Dialog.__init__(self, id=wxID_DIALOG2, name='', parent=prnt, pos=wx.Point(759, 203), size=wx.Size(420, 72), style=wx.DEFAULT_DIALOG_STYLE, title='play csound lines') self.SetClientSize(wx.Size(412, 38)) self.Bind(wx.EVT_RIGHT_DCLICK, self.OnDialog2RightDclick) self.textCtrl1 = wx.TextCtrl(id=wxID_DIALOG2TEXTCTRL1, name='textCtrl1', parent=self, pos=wx.Point(56, 8), size=wx.Size(100, 21), style=0, value='test') self.textCtrl2 = wx.TextCtrl(id=wxID_DIALOG2TEXTCTRL2, name='textCtrl2', parent=self, pos=wx.Point(216, 8), size=wx.Size(100, 21), style=0, value='') self.staticText1 = wx.StaticText(id=wxID_DIALOG2STATICTEXT1, label='from line', name='staticText1', parent=self, pos=wx.Point(8, 8), size=wx.Size(41, 13), style=0) self.staticText1.SetToolTipString('From Line') self.staticText1.SetBackgroundStyle(wx.BG_STYLE_SYSTEM) self.staticText1.SetForegroundColour(wx.Colour(255, 0, 0)) self.staticText2 = wx.StaticText(id=wxID_DIALOG2STATICTEXT2, label='To Line', name='staticText2', parent=self, pos=wx.Point(168, 8), size=wx.Size(34, 13), style=0) self.staticText2.SetForegroundColour(wx.Colour(255, 0, 0)) self.button1 = wx.Button(id=wxID_DIALOG2BUTTON1, label='play', name='button1', parent=self, pos=wx.Point(328, 8), size=wx.Size(75, 23), style=0) self.button1.Bind(wx.EVT_BUTTON, self.OnButton1Button, id=wxID_DIALOG2BUTTON1) def __init__(self, parent): self._init_ctrls(parent) def OnDialog2RightDclick(self, event): fromline = int(self.textCtrl1.GetValue(self)) toline = int(self.textCtrl2.GetValue(self)) csoundroutines2.playscoreinrange(From_File, fromline, toline)#needs filename def OnButton1Button(self, event): fromline = int(self.textCtrl1.GetValue()) toline = int(self.textCtrl2.GetValue()) csoundroutines2.playscoreinrange(self.From_File, fromline, toline)#needs filename https://sourceforge.net/projects/dex-tracker -- http://mail.python.org/mailman/listinfo/python-list