On 02/12/2011 05:20 AM, Abhishek Gulyani wrote:
When I write binary files in windows:

file  = open(r'D:\Data.bin','wb')
file.write('Random text')
file.close()

and then open the file it just shows up as normal text. There is nothing binary about it. Why is that?

Sorry if this is too much of a noobie question. I tried googling around but couldn't find an answer.

But then, you opened the file you created in Notepad and saw that the lines weren't wrapping maybe?

It all comes down to Line endings. Read here to see what LF vs. CRLF is all about http://en.wikipedia.org/wiki/Newline#Representations

You see, when you read a file, Python converts both LF and CRLF to "\n". When you write a "\n" to a file Python writes CRLF in Windows and just LF in Unix machines. That'd be a heck troublesome when dealing with binary files, hence the 'b' flag. It basically means *Don't convert newlines", and it's pretty common in software.

So, to answer your question: If you're only writing text to a file, you'll only see a difference if your external text editor isn't smart enough to treat both LF and CRLF as newlines. Like Notepad did back in the day, and maybe still does. But if you're writing binary stuff, it makes all the difference in the world.

Nick
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to