On 2022-12-07 at 12:38 +0000, Chris Elvidge wrote: > I don't use Python generally, but my understanding of it (only a > quick test) > > f = open("demofile2.txt", "a") > f.write("Now the file has more content!") > f.close() > > f.write doesn't append either \r\n or \n unless specified. > > f.write("Now the file has more content!\n") does, in Windows, seem > to > append \r\n. In Linux (Slackware) and WSL (Slackware), it only > appends \n. > > So it does seem to be a "problem" with Windows rather than a problem > with Python. > > However, I may be wrong!!
The open() function in python has a newline parameter which can be None, '', '\n', '\r', and '\r\n'. When writing output to the stream, if newline is None (the default), any '\n' characters written are translated to the system default line separator (os.linesep). Details on https://docs.python.org/3/library/functions.html#open Thus, adding newline='\n' to your python open() calls would create the files with unix newlines. For bash itself, it's a bit more convoluted, as it will depend on the C library used (which might be doing newline translation or not) that willl be bridging between the POSIX API and Windows native functions. Regards