О, вы можете определенно использовать 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}')
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/
Посмотрите на видео на странице презентации , чтобы получить быстрый обзор функций.
Если вы используете bpython, вся ваша история команд по умолчанию сохраняется на ~/.pythonhist
.
Чтобы сохранить команды для последующего повторного использования, вы можете скопировать их в файл сценария python:
$ cp ~/.pythonhist mycommands.py
Затем отредактируйте этот файл, чтобы очистить его, и поместите его под путь Python (пакеты сайтов глобальной или виртуальной среды, текущий каталог, упоминаемый в * .pth или каким-либо другим способом).
Чтобы включить команды в вашу оболочку, просто импортируйте их из сохраненного файла:
>>> from mycommands import *
Для печати и сохранения истории ввода (и, при необходимости, вывода) существует% истории магии.
Чтобы сохранить текущий сеанс в файле с именем 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.
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.
readline.parse_and_bind('tab: complete')
работает, если вы используете MacPorts Python.
– Phillip Cloud
5 June 2012 в 20:04
Команда %history
является удивительной, но, к сожалению, она не позволит вам сохранить вещи, которые были% paste 'd в sesh. Для этого я думаю, что вам нужно сделать %logstart
в начале (хотя я не подтвердил, что это работает).
Мне нравится делать
%history -o -n -p -f filename.txt
, который сохранит выходные данные, номера строк и «>>>» перед каждым вводом (опционы o, n и p). См. Документы для% history здесь .
Некоторые комментарии задавали вопрос о том, как сохранить все входы IPython сразу. Для% save magic в IPython вы можете сохранить все команды программно, как показано ниже, чтобы избежать сообщения о приглашении, а также избегать указания номеров ввода. currentLine = len (In) -1% save -f my_session 1- $ currentLine
Параметр -f
используется для принудительной замены файла, а len(IN)-1
показывает текущее приглашение ввода в IPython, что позволяет вам для сохранения всей сессии программно.
есть еще один вариант --- pyslice. в «демонстрационных версиях и инструментах wxpython 2.8 docs» есть программа с открытым исходным кодом с именем «pyslices».
вы можете использовать ее как редактор, а также поддерживать ее, как консоль ---- выполнение каждая строка, как интерактивный интерпретатор с немедленным эхом.
, конечно, все блоки кодов и результаты каждого блока будут автоматически записаны в txt-файл.
результаты регистрируются непосредственно за соответствующим блоком кода. очень удобно.
[/g0]
Для тех, кто использует 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
Я хотел бы предложить другой способ поддерживать сеанс python через tmux на linux. вы запускаете tmux, присоединяете себя к сеансу, который вы открыли (если он не прикреплен после его открытия напрямую). выполнить python и делать все, что вы делаете на нем. затем отсоединяться от сеанса. отключение сеанса tmux не закрывает сеанс. сессия остается открытой.
профи этого метода: вы можете присоединить к этому сеансу с любого другого устройства (в случае, если вы можете ssh ваш компьютер)
минус этого метода: этот метод не отказывается от ресурсов используемый открытым сеансом python, пока вы на самом деле не будете использовать интерпретатор python.
Если вы используете IPython , вы можете сохранить в файл все свои предыдущие команды, используя магическую функцию % history с помощью -f , pe:
%history -f /tmp/history.py
save
. Это было очень полезно
– alpha_989
2 February 2018 в 19:30
%history -g -f full_history.py
для получения истории из всех сеансов, а не только для текущей. См. Также: документация для% history .
– Evgeni Sergeev
28 March 2018 в 00:38
Кроме того, reinteract предоставляет вам портативный интерфейс для сеанса Python.
Просто добавив еще одно предложение в чашу: Spyder
Он имеет Журнал журнала ] и Variable explorer . Если вы работали с MatLab, вы увидите сходство.
http://www.andrewhjon.es/save-interactive-python-session-history
import readline
readline.write_history_file('/home/ahj/history')
Мне пришлось бороться, чтобы найти ответ, я был очень знаком с средой 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).
В дополнение к IPython, аналогичная утилита bpython имеет функцию «сохранить введенный код в файл»
После установки Ipython и открытия сеанса Ipython, выполнив команду:
ipython
из командной строки, просто запустите следующую команду «магия» Ipython, чтобы автоматически запишите весь сеанс Ipython:
%logstart
Это создаст уникальный файл .py и сохранит ваш сеанс для последующего использования в качестве интерактивного сеанса Ipython или для использования в выбранном вами скрипте (сценариях).
In[48]
). Таким образом,save filename 1-48
сохранит всю вашу сессию. – Ben Page 22 September 2011 в 11:51%load my_useful_session
– Daniel Serodio 5 January 2017 в 03:23