Сохранение Python в файл в Linux [дубликат]

О, вы можете определенно использовать try catch, чтобы проверить, использует ли его или нет действительный JSON

Tested on Firfox Quantum 60.0.1

функцию внутри функцию для проверки JSON и использование этого вывода для проверки строки. слышит пример.

    function myfunction(text){

       //function for validating json string
        function testJSON(text){
            try{
                if (typeof text!=="string"){
                    return false;
                }else{
                    JSON.parse(text);
                    return true;                            
                }
            }
            catch (error){
                return false;
            }
        }

  //content of your real function   
        if(testJSON(text)){
            console.log("json");
        }else{
            console.log("not json");
        }
    }

//use it as a normal function
        myfunction('{"name":"kasun","age":10}')
360
задан Community 2 January 2013 в 02:09
поделиться

17 ответов

IPython чрезвычайно полезен, если вам нравится использовать интерактивные сеансы. Например, для вашего прецедента есть волшебная команда %save , вы просто вводите %save my_useful_session 10-20 23, чтобы сохранить строки ввода от 10 до 20 и от 23 до my_useful_session.py (чтобы помочь с этим, каждая строка

Кроме того, в документации указано:

Эта функция использует тот же синтаксис, что и % history для диапазонов ввода, затем сохраняет строки в указанном имени файла.

Это позволяет, например, ссылаться на более старые сеансы, такие как

%save current_session ~0/
%save previous_session ~1/

Посмотрите на видео на странице презентации , чтобы получить быстрый обзор функций.

330
ответ дан tutuDajuju 19 August 2018 в 19:43
поделиться
  • 1
    Как сохранить все линии? Без указания диапазона он создает пустой файл. :( – balki 1 September 2011 в 20:37
  • 2
    @balki, подсказка IPython сообщает вам, сколько строк в вашей истории (т. е. In[48]). Таким образом, save filename 1-48 сохранит всю вашу сессию. – Ben Page 22 September 2011 в 11:51
  • 3
    Кроме того, можно ли загрузить этот файл обратно в ipython и сохранить историю ввода неповрежденной? – Ben Page 22 September 2011 в 11:58
  • 4
    @BenPage Использование & quot; ipython -i [filename] & quot; на сохраненный .py-файл, из bash promt, чтобы загрузить файл обратно, прежде чем вернуться в интерактивную консоль! (без флага -i вы не получаете интерактивную консоль после запуска файла). – Samuel Lampa 29 November 2012 в 16:30
  • 5
    @ user4779, как и следовало ожидать: %load my_useful_session – Daniel Serodio 5 January 2017 в 03:23

Если вы используете bpython, вся ваша история команд по умолчанию сохраняется на ~/.pythonhist.

Чтобы сохранить команды для последующего повторного использования, вы можете скопировать их в файл сценария python:

$ cp ~/.pythonhist mycommands.py

Затем отредактируйте этот файл, чтобы очистить его, и поместите его под путь Python (пакеты сайтов глобальной или виртуальной среды, текущий каталог, упоминаемый в * .pth или каким-либо другим способом).

Чтобы включить команды в вашу оболочку, просто импортируйте их из сохраненного файла:

>>> from mycommands import *
0
ответ дан Aidas Bendoraitis 19 August 2018 в 19:43
поделиться

Для печати и сохранения истории ввода (и, при необходимости, вывода) существует% истории магии.

Чтобы сохранить текущий сеанс в файле с именем my_history.py:

>>> %hist -f my_history.py

История IPython хранит как команды, которые вы вводите, так и полученные результаты. Вы можете легко пройти предыдущие команды с помощью клавиш со стрелками вверх и вниз или получить доступ к своей истории более сложными способами.

Вы можете использовать функцию% history magic для изучения прошлых входных и выходных данных. История ввода из предыдущих сеансов сохраняется в базе данных, а IPython может быть сконфигурирован для сохранения истории вывода.

Несколько других магических функций могут использовать вашу историю ввода, включая% edit,% reerun,% inv,% macro ,% save и% pastebin. Вы можете использовать стандартный формат для ссылки на строки:

%pastebin 3 18-20 ~1/1-5

Это займет строка 3 и строки с 18 по 20 из текущего сеанса и строки 1-5 из предыдущего сеанса.

См.% history? для Docstring и других примеров.

Также не забудьте изучить возможности % store magic для облегчения сохранения переменных в IPython.

Сохраняет переменные, псевдонимы и макросы в базе данных IPython.

d = {'a': 1, 'b': 2}
%store d  # stores the variable
del d

%store -r d  # Refresh the variable from IPython's database.
>>> d
{'a': 1, 'b': 2}

Чтобы автозапускать сохраненные переменные при запуске, укажите c.StoreMagic.autorestore = True в файле ipython_config.py.

3
ответ дан Alexander 19 August 2018 в 19:43
поделиться
  • 1
    Включение сохранения истории вывода может быть выполнено путем включения c.HistoryManager.db_log_output в файле конфигурации. – Ikke 3 June 2016 в 07:34

Для этого существует способ . Сохраните файл в ~/.pystartup ...

# Add auto-completion and a stored history file of commands to your Python
# interactive interpreter. Requires Python 2.0+, readline. Autocomplete is
# bound to the Esc key by default (you can change it - see readline docs).
#
# Store the file in ~/.pystartup, and set an environment variable to point
# to it:  "export PYTHONSTARTUP=/home/user/.pystartup" in bash.
#
# Note that PYTHONSTARTUP does *not* expand "~", so you have to put in the
# full path to your home directory.

import atexit
import os
import readline
import rlcompleter

historyPath = os.path.expanduser("~/.pyhistory")

def save_history(historyPath=historyPath):
    import readline
    readline.write_history_file(historyPath)

if os.path.exists(historyPath):
    readline.read_history_file(historyPath)

atexit.register(save_history)
del os, atexit, readline, rlcompleter, save_history, historyPath

, а затем установите переменную среды PYTHONSTARTUP в вашей оболочке (например, в ~/.bashrc):

export PYTHONSTARTUP=$HOME/.pystartup

Вы также можете добавить это, чтобы получить автозаполнение бесплатно:

readline.parse_and_bind('tab: complete')

Обратите внимание, что это будет работать только в системах * nix. Поскольку readline доступен только на платформе Unix.

82
ответ дан brandizzi 19 August 2018 в 19:43
поделиться
  • 1
    Mac OS X использует editline, поэтому доступна полная функциональность с табуляцией, но точная команда отличается: readline.parse_and_bind ("bind ^ I rl_complete & quot;") – Miles 4 June 2009 в 00:45
  • 2
    @Miles, спасибо за информацию – Nadia Alramli 4 June 2009 в 00:48
  • 3
    Это было безумно быстро, Надя, большое спасибо. Я попробую оба ответа - целевая платформа - Ubuntu, BTW – unmounted 4 June 2009 в 01:01
  • 4
    readline.parse_and_bind('tab: complete') работает, если вы используете MacPorts Python. – Phillip Cloud 5 June 2012 в 20:04
  • 5
    Это должно быть обрамлено. Работал на RHEL 6.6. Пеньев, 2.7.10. – BilliAm 16 September 2015 в 22:27

Команда %history является удивительной, но, к сожалению, она не позволит вам сохранить вещи, которые были% paste 'd в sesh. Для этого я думаю, что вам нужно сделать %logstart в начале (хотя я не подтвердил, что это работает).

Мне нравится делать

%history -o -n -p -f filename.txt

, который сохранит выходные данные, номера строк и «>>>» перед каждым вводом (опционы o, n и p). См. Документы для% history здесь .

2
ответ дан Community 19 August 2018 в 19:43
поделиться

Некоторые комментарии задавали вопрос о том, как сохранить все входы IPython сразу. Для% save magic в IPython вы можете сохранить все команды программно, как показано ниже, чтобы избежать сообщения о приглашении, а также избегать указания номеров ввода. currentLine = len (In) -1% save -f my_session 1- $ currentLine

Параметр -f используется для принудительной замены файла, а len(IN)-1 показывает текущее приглашение ввода в IPython, что позволяет вам для сохранения всей сессии программно.

0
ответ дан E. F. Haghish 19 August 2018 в 19:43
поделиться

есть еще один вариант --- pyslice. в «демонстрационных версиях и инструментах wxpython 2.8 docs» есть программа с открытым исходным кодом с именем «pyslices».

вы можете использовать ее как редактор, а также поддерживать ее, как консоль ---- выполнение каждая строка, как интерактивный интерпретатор с немедленным эхом.

, конечно, все блоки кодов и результаты каждого блока будут автоматически записаны в txt-файл.

результаты регистрируются непосредственно за соответствующим блоком кода. очень удобно.

the overview of pyslices [/g0]

1
ответ дан fandyst 19 August 2018 в 19:43
поделиться
  • 1
    Автор PySlices здесь. Рад, что вы любите PySlices (и что вы даже нашли его). Это еще не совсем оставленное (я на самом деле все еще использую его), но версия, содержащаяся в самом wxPython, часто не работает. Если вы хотите следить за обновлениями, вы можете получить их из пакета wx_py: pypi.python.org/pypi/wx_py , github.com/davidmashburn/wx_py – David 23 September 2016 в 16:40

Для тех, кто использует spacemacs и ipython, которые поставляются с python-layer, сохранение магии создает много нежелательного вывода из-за постоянной команды автозавершения, работающей на заднем плане, например:

len(all_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all_substa'''))
len(all_substantives_w_suffixes)
';'.join(__PYTHON_EL_get_completions('''len'''))
';'.join(__PYTHON_EL_get_completions('''all'''))
';'.join(__PYTHON_EL_get_completions('''all_'''))
';'.join(__PYTHON_EL_get_completions('''all_w'''))
';'.join(__PYTHON_EL_get_completions('''all_wo'''))
';'.join(__PYTHON_EL_get_completions('''all_wor'''))
';'.join(__PYTHON_EL_get_completions('''all_word'''))
';'.join(__PYTHON_EL_get_completions('''all_words'''))
len(all_words_w_logograms)
len(all_verbs)

Чтобы избежать этого, просто сохраните буфер ipython, как обычно, для сохранения любого другого: spc f s

0
ответ дан Kaan E. 19 August 2018 в 19:43
поделиться

Я хотел бы предложить другой способ поддерживать сеанс python через tmux на linux. вы запускаете tmux, присоединяете себя к сеансу, который вы открыли (если он не прикреплен после его открытия напрямую). выполнить python и делать все, что вы делаете на нем. затем отсоединяться от сеанса. отключение сеанса tmux не закрывает сеанс. сессия остается открытой.

профи этого метода: вы можете присоединить к этому сеансу с любого другого устройства (в случае, если вы можете ssh ваш компьютер)

минус этого метода: этот метод не отказывается от ресурсов используемый открытым сеансом python, пока вы на самом деле не будете использовать интерпретатор python.

0
ответ дан Myonaiz 19 August 2018 в 19:43
поделиться

Если вы используете IPython , вы можете сохранить в файл все свои предыдущие команды, используя магическую функцию % history с помощью -f , pe:

%history -f /tmp/history.py
52
ответ дан nachouve 19 August 2018 в 19:43
поделиться
  • 1
    Самый простой и полезный из всего этого списка. – Ivan 28 April 2016 в 17:31
  • 2
    На самом деле то, что большинство людей искали и должно быть правильным ответом – mork 2 April 2017 в 08:13
  • 3
    Не был уверен в местоположении файла, используя магию save. Это было очень полезно – alpha_989 2 February 2018 в 19:30
  • 4
    Используйте %history -g -f full_history.py для получения истории из всех сеансов, а не только для текущей. См. Также: документация для% history . – Evgeni Sergeev 28 March 2018 в 00:38

Кроме того, reinteract предоставляет вам портативный интерфейс для сеанса Python.

13
ответ дан Ned Batchelder 19 August 2018 в 19:43
поделиться

Просто добавив еще одно предложение в чашу: Spyder

Он имеет Журнал журнала ] и Variable explorer . Если вы работали с MatLab, вы увидите сходство.

3
ответ дан Norfeldt 19 August 2018 в 19:43
поделиться

http://www.andrewhjon.es/save-interactive-python-session-history

import readline
readline.write_history_file('/home/ahj/history')
124
ответ дан Roberto Z 19 August 2018 в 19:43
поделиться

Мне пришлось бороться, чтобы найти ответ, я был очень знаком с средой iPython.

Это будет работать

Если ваш сеанс iPython выглядит так

In [1] : import numpy as np
....
In [135]: counter=collections.Counter(mapusercluster[3])
In [136]: counter
Out[136]: Counter({2: 700, 0: 351, 1: 233})

Вы хотите сохранить строки от 1 до 135, а затем на том же сеансе ipython используйте эту команду

In [137]: %save test.py 1-135

. Это сохранит все ваши операторы python в файле test.py в вашем текущем каталоге (где вы инициировали ipython).

6
ответ дан Somum 19 August 2018 в 19:43
поделиться

В дополнение к IPython, аналогичная утилита bpython имеет функцию «сохранить введенный код в файл»

11
ответ дан user 19 August 2018 в 19:43
поделиться
  • 1
    Это здорово, я должен снимать скриншоты. – unmounted 4 June 2009 в 09:01
  • 2
    может ли кто-нибудь объяснить, как это делается с bpython? Я пробовал ctrl + s, но он не работал (версия 0.14.2 поверх Python 3.4.3, работающего с терминалом Gnome) – Yibo Yang 25 January 2016 в 08:38
  • 3
    По умолчанию он привязан к F7. F1 покажет вам помощь и текущие привязки клавиш. – Jim K. 6 June 2017 в 20:30

После установки Ipython и открытия сеанса Ipython, выполнив команду:

ipython

из командной строки, просто запустите следующую команду «магия» Ipython, чтобы автоматически запишите весь сеанс Ipython:

%logstart

Это создаст уникальный файл .py и сохранит ваш сеанс для последующего использования в качестве интерактивного сеанса Ipython или для использования в выбранном вами скрипте (сценариях).

15
ответ дан webappzero 19 August 2018 в 19:43
поделиться
2
ответ дан Community 31 October 2018 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: