¿Por qué el readline.read_history_file de Python no funciona desde un script, sino que funciona de manera interactiva?

2

Le pregunté sobre el desbordamiento de pila, pero esto parece ser un problema específico de Mac OS X ya que el error no ocurre en otro sistema operativo (ubuntu, por ejemplo).

enlace que se repite a continuación:

Entonces. Soy dueño del archivo llamado ~ / .osc_history, como se muestra a continuación:

$ w
17:53  up  3:15, 5 users, load averages: 1.30 1.17 1.10
USER     TTY      FROM              LOGIN@  IDLE WHAT
kyma     console  -                14:39    3:14 -
kyma     s001     -                17:20       - w

$ ls -l ~/.osc_history 
-rw-r--r--  1 kyma  staff  13 Mar  6 17:41 /Users/kyma/.osc_history

$ ls -lO ~/.osc_history 
-rw-r--r--  1 kyma  staff  - 13 Mar  6 17:41 /Users/kyma/.osc_history

El encabezado del archivo es correcto:

$ cat ~/.osc_history 
_HiStOrY_V2_

Desde el indicador interactivo, el siguiente código funciona bien:

$ python
Python 2.7.10 (default, Jul 30 2016, 19:40:32) 
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os.path
>>> import readline
>>> histfile = os.path.join(os.path.expanduser("~"), ".osc_history")
>>> histfile
'/Users/kyma/.osc_history'
>>> readline.read_history_file(histfile)
>>> ^D

Sin embargo, cuando intento ejecutar lo siguiente, que he llamado "yeuch.py" ...

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import readline                 # Command line history
import os.path

histfile = os.path.join(os.path.expanduser("~"), ".osc_history")
if not os.path.isfile(histfile):     # If there's no history file...
    empty = open(histfile, "a")      # ... create an ALMOST empty one...
    empty.write("_HiStOrY_V2_\n")    # ... with the special header line
    empty.close()
readline.read_history_file(histfile) # Read history from previous sessions
readline.set_history_length(1000)    # Default length was -1 (infinite)

... Ya veo:

$ python yeuch.py
Traceback (most recent call last):
  File "yeuch.py", line 14, in <module>
    readline.read_history_file(histfile) # Read history from previous sessions
IOError: [Errno 1] Operation not permitted

¿Qué diablos está pasando? (Espero no pasar por alto un error tipográfico estúpido varias veces y no soy lo suficientemente experto en códigos de línea de lectura para detectar el error por mí mismo).

    
pregunta Ubuntourist 07.03.2017 - 01:58

1 respuesta

1

No estoy seguro de si has solucionado esto. Solo me encontré con eso. Puedo evitar esto haciendo que el archivo del historial de Python sea visible.

por ejemplo: > cp .pyhistory - > piratería

    
respondido por el John A 10.01.2018 - 17:12

Lea otras preguntas en las etiquetas