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