Tại sao readline.read_history_file của Python không hoạt động từ tập lệnh mà hoạt động tương tác?


2

Tôi đã hỏi về Stack Overflow, nhưng đây có vẻ là một vấn đề cụ thể đối với Mac OS X vì lỗi không xảy ra trên các HĐH khác (ví dụ như ubfox).

https://stackoverflow.com/q/42637680/447830 lặp lại dưới đây:

Vì thế. Tôi sở hữu tệp có tên ~ / .osc_history, như hiển thị bên dưới:

$ 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

Tiêu đề trong tệp là chính xác:

$ cat ~/.osc_history 
_HiStOrY_V2_

Từ dấu nhắc tương tác, đoạn mã sau chạy tốt:

$ 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

Tuy nhiên, khi tôi cố chạy phần sau, cái mà tôi đã gọi là "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)

...Tôi hiểu rồi:

$ 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

Cái quái gì đang diễn ra vậy? .


Cảm ơn đã liên kết đến các trang web khác. Đây có vẻ là một câu hỏi thú vị. Tôi mong đợi học hỏi từ những nỗ lực để trả lời và / hoặc một câu trả lời đúng.
bmike

Câu trả lời:


1

Không chắc chắn nếu bạn đã sắp xếp này. Chỉ cần chạy vào đó bản thân mình. Tôi có thể nhận được điều này làm cho tập tin lịch sử python có thể nhìn thấy.

ví dụ: & gt; cp .pyhistory - & gt; kim tự tháp


1
Làm thế nào mà làm việc trong câu hỏi anh ta không có tập tin .pyhistory. Mã chính xác và lỗi bạn đã nhận được
Mark
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.