Bir dosyayı 'belirle' ve dosya türünü bulmak mümkün mü? - düzenli mi yoksa dizin mi?Common Lisp - bir yol adı normal bir dosyaya veya dizine işaret ederse nasıl söylenir?
cevap
Sanırım birkaç yol var. probe-file
ardından bir dizin adı olduğunu ancak bir dosya adı olmadığını ve türü yapması gerektiğini belirlemek için döndürülen gerçek adı kontrol ederek. Örneğin. dizin için
CLISP, bir dosyanın var olup olmadığını ve bir dizin olup olmadığını bildiren bir EXT:PROBE-DIRECTORY
işlevine sahiptir.
Bu işlevin, standart ortak liste değil, CLISP'ye özgü olduğunu unutmayın.
Üzgünüz, ama GNU Common Lisp ve GNU CLISP aynı mıdır? GNU Common Lisp (Windows'ta GCL 2.6.6) kullanıyorum ama söz konusu paketin “ext” dosyasını bulamadım. –
@hyper: Hayır, GCL ve CLISP, Common Lisp dilinin iki farklı uygulamasıdır. Bu "clisp" yi etiketlediğinizden beri ikincisini kullandığınızı varsaydım. – sepp2k
Clisp etiketini kaldırdı. Teşekkürler! –
CL-FAD, PATHNAME-AS-DIRECTORY ile birlikte kullanıldığında yol adı kanonlaştırır ve sizin için soruyorsun stimüle etmektedir ("/ yol/dir-olmadan-sondaki-eğik çizgi" gibi bir dize uzatırken başarısızlığı önler) bir işlevi DIRECTORY-EXISTS-P sahiptir.
(CL-FAD: REHBERİ-yol adı-P (CL-FAD: yol adı-AS-REHBERİ (PROBE-DOSYA "/ yol/eksik yırtmaç")))
Bu GCL ile çalışacak gibi görünmüyor. En azından GCL "Desteklenen Lisp uygulamaları" altında listelenmiyor – sepp2k
İyi haber şu ki, GCL yarım on yılı aşkın bir süredir piyasaya sürülmediğinden, nasıl yapacağınızı anlarsanız muhtemelen Yakında herhangi bir zamanda değişen hakkında endişeleniyorum! – Ken
CL-FAD kaynak kodunu kontrol ettim - bu işlev sadece Allegro ve LispWorks için çalışıyor. –
bir portable pathname library yaklaşık bölümü okuyun Peter Seibel'in Practical Common Lisp kitabı. Ücretsiz olarak kullanılabilir. Dosya mevcut olduğunda bir pathname döndürecek veya yoksa, bir dosya-var-p-işlevi var. Bir dizin ise, iade edilen yol adı dizin biçiminde olacaktır. Ayrıca yol adını gerçekten dizin formunda olup olmadığını kontrol etmek için başka bir işlev verir.
Tüm kitap gerçekten okunmaya değer olduğundan, henüz yapmadıysanız kontrol edin.
- 1. Common Lisp
- 2. Common Lisp (SBCL)
- 3. Common Lisp Timer
- 4. Common Lisp Programatik Anahtar Kelime
- 5. common lisp: kenar yapıları için alan değeri
- 6. Clozure Common Lisp ile İkili Derleme
- 7. Bir emacs lisp hash dosyasını dosyaya serileştirme
- 8. Tuhaf otomatik tamamlama sonuçları emacs + common lisp
- 9. common-lisp: ciltleme ve sembol arasındaki fark
- 10. Common Lisp'de bir tür silme
- 11. PHP globini belirli bir dizine nasıl işaret edebilirim?
- 12. bir dosyaya mutlak yol Android
- 13. Common Lisp veya Scheme'in REPL durumunu kaydetmenin bir yolu var mı?
- 14. Bazı önerilen Common Lisp Web Sunucuları seçenekleri nelerdir?
- 15. Dosya adı olmadan bir yol bulmak
- 16. Lisp Peter Seibel'in <em>Pratik Common Lisp</em> yılında değişken sözdizimi akıl
- 17. NSString içinde bir yolun bir dizine mi yoksa bir dosyaya mı ait olduğunu belirleyin.
- 18. Sözlü Pythonistas Common Lisp kod eşdeğer gibi kelimeler olarak bir dizi baskı nasıl Python
- 19. writeToFile tamamlandığında nasıl söylenir
- 20. Yerelleştirilmiş dizine giden yol nasıl bulunur?
- 21. Common Lisp'te bir dizinde nasıl yineleyebilirim?
- 22. Common Lisp'de sınıf iç gözlemi
- 23. Rust'ta Lisp (başvuru) veya (köri) nasıl öykünebilirim?
- 24. JFileChooser'ı bir dizine nasıl kısıtlarım?
- 25. Clojure'da bir seq - Recursion (veya genel olarak Lisp)
- 26. OpenMP çalışıyorsa nasıl söylenir?
- 27. İki dosya adının aynı fiziksel dosyaya işaret edip etmediğini denetleme
- 28. bir dosyaya
- 29. glibc kullanıldığında nasıl söylenir
- 30. Kaçış html'ye nasıl söylenir?
Çözümünüzü denerken, dosya veya dizin 'filespec 'olmadığında bu kodun bir hataya neden olacağını anladım. Ben daha az hata eğilimli kod için bir 've' kullanmanızı öneririm: '(ve (prob dosya filespec) (değil (pathname-isim (prob dosya filespec))))' – Sim
Bu işe yaramaz. 'PROBE-FILE'ın dizinlerde çalıştığı net değil. Ayrıca 'pathname-name' 'dizinler için' NIL 'döndürdüğü de net değil. Genel olarak bu işlev, Common Lisp tarafından gerçekten sağlanmaz ve çoğu uygulama bunun için bir işleve sahiptir. Kütüphaneler taşınabilir isimler sağlar ... –