[Tutor] How to write strings with new line character in a file

Bob Gailer bgailer at alum.rpi.edu
Sat Oct 14 01:35:36 CEST 2006


Asrarahmed Kadri wrote:
> Here is the complete code:
> fd is the file handle.
>  
> import sys
>
>  def check_dup(fd1):
>     print fd1
>     fd1.seek(0,0)
>     done = 0
>     list1 = []
>     while not done:
>         x = fd1.readline()
>         if x == "":
>             done = 1
>         else:
>             list1.append(x)
>     return list1
>
>    
> fname = raw_input("Enter the file name to write data to:\t")
>
> fd = open(fname,'a+')
> print fd
> done = 0
>
> while not done:
>     str = raw_input("Enter login name:\t to quit type 'q'")
>    
>     if str == 'q':
>         done = 1
>     else:
>         flag = check_dup(fd)
>         print flag
>         if str in flag:
>             print "Login already exists.!!"
>         else:
>             fd.seek(0,2)
>             fd.write(str + '\n')
>
Thank you. I can't get this to fail, so I wonder whether it has to do 
with permissions? What OS are you running on?

Also note when you open a file for output (append or write) it is 
inadvisable to change the file position or to read it ( as you are doing).

As Kent points out there are better ways to do what you are doing. My 
(minimalist?) version is:

fname = raw_input("Enter the file name to write data to:\t")
fd = open(fname,'a+')
names = set()
while 1:
    name = raw_input("Enter login name:\t to quit type 'q'")
    if name == 'q':   break
    if name in names: print "Login already exists.!!"
    names.add(name)
fname.write('\n'.join(names))


-- 
Bob Gailer
510-978-4454



More information about the Tutor mailing list