no se puede leer el carácter 26 de ascii?

Escribí una secuencia en un archivo en modo texto.

# python code f = open("somewhere in my computer","w") f.write("Hello\nWorld") f.write(chr(26)) # writing ascii character #26 to file f.write("hhh") f.close() 

No puedo leer bytes después del carácter ASCII # 26. Sé que debería abrir el archivo con el modo binario. Es el carácter ascii # 26 carácter EOF . Como saben, no existe tal cosa, ei no hay ningún personaje EOF . Entonces, ¿cuál es el problema? ¿Es este un problema del sistema operativo dependiente? (Intento esto en Microsoft Windows).

El problema es debido a las ventanas. 0x1A es Ctrl-Z, y DOS lo usó como marcador de fin de archivo. Python utiliza la función CRT de Windows _wfopen, que implementa la semántica “Ctrl-Z is EOF”. Si su archivo no era un múltiplo exacto de 128 bytes, necesitaba una forma de marcar el final del texto. Este artículo implica que la selección de Ctrl-Z se basó en una convención aún más antigua utilizada por DEC.

Este código de palabras para mí para abrir y leer el archivo en Windows. Además, al usar curses, puede obtener una representación “^” de cualquier carácter de control que pueda haber en su archivo.

 import curses.ascii filename = "myfile.txt" f = open(filename,"w") f.write("Hello\nWorld") f.write(chr(26)) # writing ascii character #26 to file f.write("hhh") f.close() with open(filename,'r') as f: for line in f: line2 = [ curses.ascii.unctrl(c) if curses.ascii.iscntrl(c) else c for c in line] print("".join(line2)) 
 Da salida:
 Hola ^ j
 Mundo ^ Zhhh