Eu quero salvar todas as variáveis em meu ambiente Python atual. Parece que uma opção é usar o módulo 'pickle'. No entanto, não quero fazer isso por 2 motivos:
1) Tenho que chamar pickle.dump () para cada variável
2) Quando eu quiser recuperar as variáveis, devo lembrar a ordem em que salvei as variáveis e, em seguida, fazer pickle.load () para recuperar cada variável.
Estou procurando algum comando que salvaria toda a sessão, para que quando eu carregar esta sessão salva, todas as minhas variáveis sejam restauradas. Isso é possível?
Muito obrigado!
Gaurav
Edit: Acho que não me importo de chamar pickle.dump () para cada variável que gostaria de salvar, mas lembrar a ordem exata em que as variáveis foram salvas parece uma grande restrição. Eu quero evitar isso.
PicklingError: Can't pickle <built-in function raw_input>: it's not the same object as __builtin__.raw_input
Acabo de ter 2 variáveis declaradas em meu espaço de trabalho. Todas as ideias sobre como resolver isso? Após esta resposta, surgiu alguma maneira melhor de salvar a sessão atual?except:
vez deexcept TypeError:
. Isso arquivará as variáveis definidas pelo usuário e a maioria dos objetos (quadros de dados do pandas arquivados bem para mim)Tendo sentado aqui e falhado em salvar o
globals()
como um dicionário, descobri que você pode selecionar uma sessão usando a biblioteca de endro.Isso pode ser feito usando:
fonte
TypeError: no default __reduce__ due to non-trivial __cinit__
Uma maneira muito fácil de satisfazer suas necessidades. Para mim, funcionou muito bem:
Basta clicar neste ícone no Explorador de variáveis (lado direito do Spider):
Salvando todas as variáveis no formato * .spydata
Carregando todas as variáveis ou fotos etc.
fonte
Aqui está uma maneira de salvar as variáveis do espaço de trabalho do Spyder usando as funções do spyderlib
Deixe-me saber se funciona para você. David BH
fonte
O que você está tentando fazer é hibernar o processo. Isso já foi discutido . A conclusão é que existem vários problemas difíceis de resolver ao tentar fazê-lo. Por exemplo, com a restauração de descritores de arquivos abertos.
É melhor pensar sobre o subsistema de serialização / desserialização para seu programa. Não é trivial em muitos casos, mas é uma solução muito melhor em uma perspectiva de longo prazo.
Embora eu tenha exagerado o problema. Você pode tentar conservar seu dict de variáveis globais . Use
globals()
para acessar o dicionário. Uma vez que é indexado por varname, você não precisa se preocupar com o pedido.fonte
Se quiser que a resposta aceita resumida funcione, você pode usar:
para obter / carregar o espaço de trabalho:
funcionou quando o executei. Admito que não entendo
dir()
eglobals()
100%, então não tenho certeza se pode haver alguma advertência estranha, mas até agora parece funcionar. Comentários são bem-vindos :)depois de mais pesquisas se você chamar
save_workspace
como sugeri com globais esave_workspace
estiver dentro de uma função, ela não funcionará como esperado se você quiser salvar os verificáveis em um escopo local. Para esse usolocals()
. Isso acontece porque os globais pegam os globais do módulo onde a função é definida, não de onde ela é chamada, seria o meu palpite.fonte
Você pode salvá-lo como um arquivo de texto ou um arquivo CVS. As pessoas usam o Spyder, por exemplo, para salvar variáveis, mas ele tem um problema conhecido: para tipos de dados específicos, ele não consegue importar na estrada.
fonte