Yo estoy usando el módulo pickle en Python y tratando de archivo diferente IO modos:

# works on windows.. "rb"
with open(pickle_f, 'rb') as fhand:
        obj = pickle.load(fhand)

# works on linux.. "r"
with open(pickle_f, 'r') as fhand:
        obj = pickle.load(fhand)

# works on both "r+b"
with open(pickle_f, 'r+b') as fhand:
        obj = pickle.load(fhand)

Nunca he leído acerca de «r+b» de modo en cualquier lugar, pero se encontró mencionar acerca de que en el documentación.

Estoy recibiendo EOFError en Linux si puedo usar "rb" modo y en Windows si "r" se utiliza. Me acabo de dar "r+b" modo de un tiro y funciona en ambos.

Lo "r+b" modo? ¿Cuál es la diferencia entre «rb» y «r+b»? ¿Por qué se hace cuando los demás no?

InformationsquelleAutor Iamcool | 2013-04-01

4 Comentarios

  1. 62

    r+ es utilizado para la lectura, y modo de escritura. b es binario.
    r+b modo de abrir el archivo binario en leer o escribir de modo.

    Usted puede leer más aquí.

    • así que ¿por qué no hace su trabajo?
    • Por favor, lea esto: docs.python.org/2/tutorial/… iba a responder a su pregunta
    • si puedo conceder privilegios de escritura a un archivo obj donde no es necesario, tendrá que llevar a algún problema de seguridad en el futuro?
    • Es arriesgado. Especialmente en windows como se modifica el archivo cada vez que lo abrimos
  2. 19

    r se abre para lectura, mientras que r+ se abre para lectura y escritura. El b es binario.

    Esto es explicado en detalle en el documentación:

    El más comúnmente utilizado los valores de modo de 'r' para la lectura, 'w' para escribir (truncar el archivo si ya existe), y 'a' para anexar (que en algunos sistemas Unix significa que todas las escrituras anexar al final del archivo, independientemente de la actual posición de búsqueda). Si se omite, el valor predeterminado es 'r'. El valor predeterminado es utilizar el modo de texto, que puede convertir '\n' caracteres para una plataforma específica de la representación en la escritura y de nuevo en la lectura. Por lo tanto, cuando se abre un archivo binario, se debe anexar 'b' para el modo de valor para abrir el archivo en modo binario, lo que permitirá mejorar la portabilidad. (Anexar 'b' es útil incluso en sistemas que no tratar de binarios y archivos de texto de forma diferente, donde sirve como documentación.) Véase más abajo para obtener más valores posibles de modo.

    Modos de 'r+', 'w+' y 'a+' abrir el archivo de la actualización (tenga en cuenta que 'w+' trunca el archivo). Anexar 'b' para el modo de abrir el archivo en modo binario, en los sistemas que se diferencian entre binarios y archivos de texto; en los sistemas que no cuentan con esta distinción, la adición de la 'b' no tiene ningún efecto.

    • así, la media, r+b no hace ninguna diferencia en Linux, pero en windows.. por otra parte, ¿cuál es la diferencia entre «rb» y «r+b»..
    • No estoy seguro de que usted lea esta respuesta cuidadosamente, @Iamcool. Es la respuesta a todas sus preguntas.
  3. 6

    Mi entendimiento es que la adición de r+ se abre para lectura y escritura (como w+, aunque como se señaló en el comentario, se trunca el archivo). El b sólo se abre en modo binario, que se supone que es menos consciente de las cosas como separadores de línea (al menos en C++).

    • Si no me equivoco, «w+», se borrará el archivo, si es que existe, y, a continuación, abrirlo para su lectura y la escritura. No es lo mismo como «r+».
    • Ese es un buen punto, y que vale la pena mencionar, gracias!
  4. 2

    En Windows, ‘b’ anexa al modo abre el archivo en modo binario, por lo que
    también hay modos como ‘rb’, ‘wb’, y ‘r+b’. Python en Windows
    hace una distinción entre texto y archivos binarios; el final de la línea
    caracteres en archivos de texto automáticamente se modifica ligeramente cuando los datos
    se lee o se escribe. Esta detrás de las escenas de la modificación a los datos de archivos
    está muy bien para archivos de texto ASCII, pero va a dañar los datos binarios como que
    en JPEG o archivos EXE. Ser muy cuidadoso al utilizar el modo binario al leer
    y la escritura de dichos archivos. En Unix, no hace daño a añadir ‘b’
    el modo, así que usted puede utilizar la plataforma de manera independiente para todos los binarios
    los archivos.

    Fuente: Lectura y Escritura de Archivos

Dejar respuesta

Please enter your comment!
Please enter your name here