iPython kullanarak, bir dizindeki tüm metin dosyalarını döngülemeye çalışıyorum, her metin dosyasında bir işlem yap ("BEGIN" ile başlayan satırın ardından metin dosyasının bir bölümünü kes) ve sonra sonuçları başka bir temp.txt dosyasına kaydedin. Ancak, !cat file_path
yaptığımda, file_path
dizini almaz ve bunun yerine 'file_path'
adlı bir dize olarak yorumlanır. file_path
dizesini !cat
tarafından kullanılabilecek hazır dizine dönüştürdüğüm var mı?dizeleri tamsayı dizinlerine dönüştürme
import os
for fn in os.listdir('./dir'):
if fn.endswith('.txt'):
file_path='./dir'+fn
print "file path is:", file_path
!cat file_path | sed -e '1,/BEGIN/d'>temp.txt
Çıkışlar:
file path is: ~/Documents/dir/doc.txt
cat: file_path: No such file or directory
Bildiğim kadarıyla, dışarı çıkmak ve bir kabuk komutunu yapmak için '' cat'ı ekleyemezsiniz. "Altprocess.Popen" veya bunun gibi bir şey kullanmanız gerekir. Neden sadece python ile kırpmayı yapmıyorsunuz ya da hepsini bu şekilde karıştırmaya çalışmak yerine hepsini kabukta yapmıyorsunuz? (Bu da "işe yaramaz kedinin" kullanımına sahip) Bu IPython ve bu yüzden "!" Işte bu mu? Muhtemelen '' Belgeler'' istemiyorsunuz ama '~/Belgeler''i tahmin edebilir miyim? – beroe
Her ikisini de karıştırmak için bu yolu daha temiz buldum. Ama evet, sadece Python/Unix'te yapmak mümkün. Ve evet bu iPython'dur ve herhangi bir noktada unix'i değiştirmek mümkündür! karakter ve doğru dizin ~/Belgeler. – Peyman
Belki de "IPython" etiketini ekleyin – beroe