[Tutor] getting input for stdin

Alan Gauld alan.gauld at btinternet.com
Mon Dec 8 09:14:51 CET 2014


Forwarding tom list
Please always use Reply All (or Reply List) to include the list.


On 08/12/14 03:11, diliup gabadamudalige wrote:
> Dear Allen,
>
> :)
>
> Thank you very much for the responses but some things have been 
> totally misunderstood here. :)
>
> 1.What I want to do is to redirect the output of the program to a text 
> file instead of the standard Python output. That is why I opened the 
> text file. That part of the program works fine.
>
> 2. data is a py file named data.py which holds all the text I need to 
> be printed to the console. As it is an explanation of music theory and 
> will be large i have put it into a separate file which is loaded as a 
> module at the begining of the program. hence data.info 
> <http://data.info> which is a list of strings which are printed to the 
> scree. Hence in my program I open a text file and send the print out 
> put to that which is then printed to the text file. This works too.
>
> 3. When I ask for input in python the prompt which is usually in the 
> Python output console waits for the user input and returns that as a 
> string.
> 4.Insted of 3 above I would like the user to be able to type into a 
> text file which may be opened by the program to collect input. For 
> instance i open a text file named give_me_your_input.txt and then the 
> user types his requirement in that text file which is taken as a 
> string by the program which in turn either returns the appropriate answer.
>
> I know how to do everything else above except how to get the input 
> from the text file in real time.
>
> My program works without any flaws without any of the stdin or stdout 
> in the normal console.
>
> I hope this is clear enough to supply me with an answer.
>
> I thank you once again for your time and hope you can spare a little 
> more to help me on the way.
>
>
> On Mon, Dec 8, 2014 at 7:33 AM, Alan Gauld <alan.gauld at btinternet.com 
> <mailto:alan.gauld at btinternet.com>> wrote:
>
>     On 07/12/14 17:38, diliup gabadamudalige wrote:
>
>         if __name__ == '__main__':
>
>
>     You don't really need that unless your code can be treated
>     as a module, which yours can't.
>
>              p = os.getcwd()
>              filename = "\get scale of choice.txt"
>              filepath = p + filename
>              sys.stdout = open(filepath, "w")
>
>
>     Why are you overwriting stdout with a file?
>     Why not just write to the file directly?
>     Usually if you do overwrite stdout you make a reference
>     to the old stdout first so you can restore it later.
>
>              os.startfile(filepath)
>
>
>     This tries to execute filepath, but you just opened it
>     in write mode which creates an empty file. So you are
>     trying to execute an empty file?
>
>              for i in data.info <http://data.info> <http://data.info>:
>
>
>     What is data?
>     and what is the url like thing supposed to be?
>
>     Have you done a tutorial on Python?
>     Do you understand how the for loop works?
>     It needs an iterator/collection to operate on.
>
>     # print all the scale info
>
>         to window
>                  print i
>
>
>     This will print to stdout, which you have assigned
>     to a file above. So it won't print in any window.
>
>              run = True
>              while run:
>                  scaletemplate = ["C", "D", "E", "F", "G", "A", "B"]
>                  getscale = sys.stdin.raw_input(filepath)
>
>
>     Not sure what this is doing but raw_input reads from
>     stdin - it is not a method of stdin. And the argument to stdin is
>     supposed to be a prompt to the user, you have passed a filename?
>
>                  #getscale = raw_input("Which scale do you require?:")
>
>                  if len(getscale) > 1:
>                      getscale = getscale[0].upper() + getscale[1:]
>
>
>     getscale is commented out so this will raise an error.
>
>                  else:
>                      getscale = getscale.upper()
>
>
>                  if getscale in data.scalenames:
>                      scale = main(getscale)
>                      print scale
>
>
>     Again, what is data?
>
>                  elif getscale == "Q" or getscale == "X" or getscale
>         == "":
>                      run = False
>                      print"exiting..."
>                  else:
>                      print "No such scale"
>
>
>     Again, these prints will go to your file since it is stdout.
>
>         I need to get the stdin input from the text I type into the
>         same text
>         file that I have stdout at.
>
>
>     How would that work exactly?
>     You want to open the file in a text editor or somesuch? Then as
>     you type into it you want Python to read the values you type?
>     Before you save it? Or after? And you also want the output from
>     Python to go into the file that you are editing? While you are
>     editing it?
>
>     Can you explain exactly how the user is expected to use this
>     combination of things?
>
>     It is not clear, very unlike any normal computing task and
>     probably impossible. I suspect you have a concept in your mind but
>     it's not
>     what you are describing here.
>
>         How do I do that. None of the answers at
>         stackoverflow got me going.
>
>
>     I'm not surproised, I think what you are asking is impossible
>     (or at least very difficult) , and even if it isn't it would be
>     a weird way of working.
>
>     -- 
>     Alan G
>     Author of the Learn to Program web site
>     http://www.alan-g.me.uk/
>     http://www.amazon.com/author/alan_gauld
>     Follow my photo-blog on Flickr at:
>     http://www.flickr.com/photos/alangauldphotos
>
>
>     _______________________________________________
>     Tutor maillist  - Tutor at python.org <mailto:Tutor at python.org>
>     To unsubscribe or change subscription options:
>     https://mail.python.org/mailman/listinfo/tutor
>
>
>
>
> -- 
> Diliup Gabadamudalige
>
> http://www.diliupg.com
> http://soft.diliupg.com/
>
> **********************************************************************************************
> This e-mail is confidential. It may also be legally privileged. If you 
> are not the intended recipient or have received it in error, please 
> delete it and all copies from your system and notify the sender 
> immediately by return e-mail. Any unauthorized reading, reproducing, 
> printing or further dissemination of this e-mail or its contents is 
> strictly prohibited and may be unlawful. Internet communications 
> cannot be guaranteed to be timely, secure, error or virus-free. The 
> sender does not accept liability for any errors or omissions.
> **********************************************************************************************
>



More information about the Tutor mailing list