Bir IPython dizüstü bilgisayar hücresine metin dosyaları (.py) nasıl yüklenir / düzenlenir / çalıştırılır / kaydedilir?


232

Kısa süre önce iş akışımın bir parçası olarak IPython not defterlerini kullanmaya başladım. Ancak, düzenleyebilmeleri, çalıştırabilmeleri ve kaydedebilmeleri için .py dosyalarını açık bir IPython not defterinin tek tek hücrelerine aktarmanın bir yolunu bulmakta başarılı olamadım. Bu yapılabilir mi?

Bulduğum bu nasıl yeni dizüstü bilgisayarlar gibi .py dosyaları almak için bana söyler belgelerinde ama bu elde etmek istediğinizi gerisinde kalmaktadır.

Herhangi bir öneriniz çok takdir edilecektir.


6
İyi soru. Henüz gerçekten tatmin edici bir cevap görmedim. İnternet üzerinden bir IPython dizüstü bilgisayar servis ederken özellikle önemlidir. İnsanlar içe aktarılan işlevlerin kaynak kodunu görmek / düzenlemek isterse (sözdizimi vurgulaması vb.) Şu anda bunu yapmanın kolay bir yolu yoktur. Py dosyalarını ipynb dosyalarına dönüştürmeden açmak mümkün olmalıdır.
Peter

Yanıtlar:


306

DÜZENLEME : IPython 3'ten (şimdi Jupyter projesi) başlayarak, dizüstü bilgisayarda metin dosyalarını yüklemek / düzenlemek / kaydetmek için daha uygun bir alternatif olarak kullanılabilecek bir metin düzenleyici vardır.

Bir metin dosyası, sihirli komutla bir dizüstü bilgisayara yüklenebilir %load.

Şunları içeren bir hücre yürütürseniz:

%load filename.py

içeriği bir filename.pysonraki hücreye yüklenecek. Her zamanki gibi düzenleyebilir ve yürütebilirsiniz.

Hücre içeriğini bir dosyaya kaydetmek için, hücrenin %%writefile filename.pybaşına hücre sihrini ekleyin ve çalıştırın. Aynı adda bir dosya zaten varsa , üzerine sessizce yazılacağını unutmayın .

Herhangi bir sihirli komutun yardımını görmek için ?: gibi %load?veya ekleyin %%writefile?.

Sihirli işlevler hakkında genel yardım için "% magic" yazın Sihirli işlevlerin listesi için% lsmagic kullanın. Bunlardan herhangi birinin açıklaması için% magic_name? Yazın, örneğin '% cd?'.

Ayrıca bkz: Resmi IPython belgelerindeki sihir işlevleri .


3
Bu, artı %save -faradığım şeyi yapmanın yolu gibi görünüyor. Teşekkürler!
aaronsstack

2
save -fdosyaya kaydetmenin bir tür dolaylı yoludur ve yalnızca önce hücreyi çalıştırıp doğru referansı sağlamanız durumunda çalışır. Genel olarak %%writefile, mevcut hücreyi bir dosyaya yazan kullanımı daha kolaydır . Bundan bahsetmek için cevabı güncelledim.
user2304916

4
Yeni sihirli komut şu anda %loadpy(yerine %load).
AlQuemist

1
göre ipython.org/ipython-doc/3/interactive/magics.html kullanarak %load": İnce, ileriye gidiyor %loadpy ( takma %load ) - %loadpyBazı esneklik kazanmış ve bir şartını düşmüştür .pyuzantısı basitçe içine yeniden adlandırıldı Yani. %loadDaha %loadfazla bilgi için doktora bakabilirsiniz . "
michael

118

Yazmak / kaydetmek için

%%writefile myfile.py

  • hücre içeriğini myfile.py dosyasına yazın / kaydedin ( -aeklemek için kullanın ). Başka bir takma ad:%%file myfile.py

Koşmak

%run myfile.py

  • myfile.py komutunu çalıştırır ve sonuçları geçerli hücrede verir

Yüklemek / almak için

%load myfile.py

  • geçerli hücreye "import" myfile.py dosyasını yükle

Daha fazla sihir ve yardım için

%lsmagic

  • diğer tüm serin hücre sihirli komutlarını listeler.

%COMMAND-NAME?

  • Belirli bir komutun nasıl kullanılacağı hakkında yardım için. yani%run?

Not

Hücre sihirli komutlarının yanı sıra, IPython notebook (şimdi Jupyter notebook) o kadar havalı ki, herhangi bir unix komutunu doğrudan hücreden kullanmanıza izin veriyor (bu aynı zamanda %%bashhücre sihirli komutunu kullanmaya eşdeğer ).

Hücreden bir unix komutu çalıştırmak için komutunuzdan önce !işareti koyun . Örneğin:

  • !python --version python sürümünüzü görün
  • !python myfile.pytıpkı, geçerli hücrede myfile.py ve çıkış sonuçlarını çalıştırmak %run(arasındaki farkı görmek !pythonve %runyorumların aşağıda).

Ayrıca, örneklerle daha fazla açıklama için bu nbviewer'a bakın . Bu yardımcı olur umarım.


1
Teşekkürler, ben windows kullanın ve denedim! Dir, çıktı !dir Volume in drive D is Documentsvb ... Yani sadece bash değil cmd de!
brian

1
@iamaziz Sanırım demek istediğini !python --version(yazım hatası)
Alexandre

5
Aziz, bu mükemmel bir cevap. Küçük bir not: %run myfile.pyaksine kullanmak biraz farklı !python myfile.py. Öncekini yaparsanız, önceden yüklenmiş herhangi bir yapılandırma da dahil olmak üzere ipython çekirdeğini kullanarak yürütülür. Küçük bir sorun, ama bugün benim için fark yarattığı bir hatayla karşılaştım.
Tristan Reid

%run myfile.pyKomut dosyanıza IPython hücre sihirli komutlarını eklerken bu cevapta açıklanan eşdeğerini yapmak istiyorsanız , kullanın %run myfile.ipy.
Wayne

8

Ipython not defterlerinin "ev" not defterleri tablosuna bir Python dosyasını sürükleyip bırakın, yükle'yi tıklayın. Bu, yalnızca .py dosya içeriğinizi içeren bir hücreye sahip yeni bir not defteri oluşturur

En sevdiğiniz düzenleyiciden başka kopyala / yapıştır;)


1
Cevabınız için teşekkürler, ancak yazımın gövdesinde belirttiğim gibi, her seferinde yeni bir not defteri oluşturmaktan kaçınmak istiyorum.
aaronsstack

Yanılıyorsam beni düzelt: Not defterini metin editörü olarak kullanmayacak mısın? (Yani: hücredeki her değişiklik .py dosyasını değiştirmez). Bu arada, bir hücreye .py içeriği eklemek için yerel bir yolla ilgili hiçbir ipucum yok, gerektiğinde her zaman kodumu kopyala / yapıştır ... üzgünüm
Raphaël Braud

5

Ben dosyayı bulmak için ipython defter içinde ls ve cd kullanmak tatmin edici bulduk. Daha sonra hücreye cat your_file_name yazın; dosyanın içeriğini geri alırsınız; bu durumda hücreye kod olarak yapıştırabilirsiniz.


!cat "file.txt"
Enrique Pérez Herrero
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.