Tüm alt dizinleri ve dosyaları bir dizin ağacında listelemeyi biliyorum. Ama tüm yeni oluşturulan dosyaları, (ve eğer mümkünse) silinmiş dosyaları kök dizininden başlayarak bir dizin ağacındaki tüm dizinlerde listelemenin yolunu arıyorum.Yeni oluşturulan, değiştirilen ve silinmiş dosyaların tümünü/dizininden başlayarak tüm dizinleri/alt dizinleri bulmak için Python kodu
cevap
:
import os
import datetime as dt
now = dt.datetime.now()
ago = now-dt.timedelta(minutes=30)
for root, dirs,files in os.walk('.'):
for fname in files:
path = os.path.join(root, fname)
st = os.stat(path)
mtime = dt.datetime.fromtimestamp(st.st_mtime)
if mtime > ago:
print('%s modified %s'%(path, mtime))
silinen dosyaların bir listesini oluşturmak için ayrıca olurdu 30 dakika önce dosya listesi var.
daha sağlam bir alternatif git
gibi bir düzeltme kontrol sistemi kullanmaktır. Dizindeki tüm dosyaların bir taahhütte bulunması, bir anlık görüntü oluşturmak gibidir. Sonra
komutu, son işlemden bu yana değişen tüm dosyaları listeleyecektir. Bu da silinmiş dosyaları listeler.
Yukarıdaki kodu çalıştırarak, aşağıdaki hatayı verir: Traceback (son çağrı son): Dosya "tsck.py", satır 13, içinde? print ('{p} değiştirilmiş {m}'. Format (p = yol, m = m zaman)) AttributeError: 'str' nesnesi 'format' özelliğine sahip değil – nsh
Çok yavaş, başka bir yol bulabiliriz, etkinleştirebiliriz Sistem yeni oluşturulan dosyaları günlüğe kaydetme ve ardından günlük dosyalarını ayrıştırma. veya daha iyi bir yol, yeni günlük girişi için bir tetikleyici eklemektir. – pylover
@nsh: 'str.format', Python2.6'da tanıtıldı. Önceki sürümlerde, '% s' stili dizge biçimlendirmesini kullanabilirsiniz. Ne demek istediğimi göstermek için gönderimi düzenleyeceğim. – unutbu
bir göz atın
örnek
karşılaştırmak için bir geçici dosya oluşturmak "adam bulmak":
find/-type f -newerB tempFile
adamın kısmı bulmak
-newerXY reference
Compares the timestamp of the current file with reference. The reference argument is normally the name of a file (and one
of its timestamps is used for the comparison) but it may also be a string describing an absolute time. X and Y are place‐
holders for other letters, and these letters select which time belonging to how reference is used for the comparison.
a The access time of the file reference
B The birth time of the file reference
c The inode status change time of reference
m The modification time of the file reference
t reference is interpreted directly as a time
from tempfile import mkstemp
import shutil
import os
import datetime as dt
import sys
# gets the time frame we are going to look back and builds a placeholder list to passover the info from our mtime to slay
now=dt.datetime.now()
ago=now-dt.timedelta(minutes=480)
passover=[]
# the '.' is the directory we want to look in leave it to '.' if you want to search the directory the file currently resides in
for root,dirs,files in os.walk('.'):
for fname in files:
path=os.path.join(root,fname)
st=os.stat(path)
mtime=dt.datetime.fromtimestamp(st.st_mtime)
if mtime>ago:
passover.append(path)
def slay(file_path, pattern, subst):
#Create temp file
fh, abs_path = mkstemp()
with open(abs_path,'w') as new_file:
with open(file_path) as old_file:
for line in old_file:
new_file.write(line.replace(pattern, subst))
old_file.close()
#Remove original file
os.remove(file_path)
#Move new file
try:
shutil.move(abs_path, file_path)
except WindowsError:
pass
#we pass the passover list to the slay command in a for loop in order to do muiltple replaces in those files.
for i in passover:
slay(i,"String1","String2")
Bunu bir dir dosyasına bakmak ve son zaman içinde değiştirilen dosyaları seçmek için oluşturdum ve ardından bu dosyalardaki metni değiştirin. Bu senaryo etrafta uzanmıyordu ve yukarıdaki cevaptan bir araya getirmem gerekiyordu, bu yüzden başka birinin onu aramaya gelebileceğini düşündüm. – Powerboy2
Lütfen cevabınızı bu bilgi ile düzenleyin. Ayrıca, tam bir cevap, ne yaptığını açıklayan birkaç satır olmalıdır. Lütfen şu makaleyi okuyun: [İyi bir cevabı nasıl yazarım?] (Http://stackoverflow.com/help/how-to-answer) – Mariano
- 1. GIT yeni/değiştirilmiş/silinmiş dosyaların listesi
- 2. Git Bir dalda değiştirilen tüm dosyaların bir listesini alma
- 3. Kümelenmiş dizinleri bulmak için SQL Server sorgusu
- 4. geçen ay değiştirilen dosyaların sayısını alın
- 5. Değiştirilen dosyaların üzerine nasıl yapılacağı Subclipse
- 6. Eclipse - Galileo IDE, oluşturulmadan önce değiştirilen dosyaların kaydedilmesini zorlar mı?
- 7. PHP - açılan menüde ardışık tüm dizinleri ve alt dizinleri listeleme
- 8. python beautifulsoup findall'u bulmak için
- 9. SVN, birleştirme sırasında yeni eklenen dizinleri siler
- 10. Yeni oluşturulan metin dosyası için bir dizin nasıl belirlenir?
- 11. Sonarda oluşturulan kodu dışla
- 12. Python programı dizinleri çaprazlamak ve dosya bilgilerini okumak için
- 13. jQuery: yeni oluşturulan elemana
- 14. Sil'deki tüm "silinmiş ancak güncellenmemiş" dosyaları silin
- 15. okunması, satır 5'ten başlayarak ve başlıklar
- 16. Dosya karşılaştırması için bir .NET kütüphanesi var mıdır ve eklenen, değiştirilen ve silinmiş satırlar dışında sayısız koleksiyonları döndürüyor mu?
- 17. Belirli bir tarihte oluşturulan ve/veya değiştirilen saklı yordamların listesini alın.
- 18. Grunt ile silinen dosyaların izlenmesi
- 19. PHP preg_match Tüm kelimeleri bulmak için
- 20. x tarihinden başlayarak x tarihinden başlayarak,
- 21. Zend_Search_Lucene dizinleri oluşturma ve güncelleştirme
- 22. Tüm değiştirilen dosyaları Netbeans'de Github'a gönderin
- 23. C#: Bir dizinden 5 yeni (son değiştirilen) dosyayı edinin
- 24. Tüm sınıfta bulmak için RegEx C#
- 25. Linux dün değiştirilen tüm dosyalar değiştirildi
- 26. Mercurial - bir değişiklik kümesinde değiştirilen tüm dosyalar?
- 27. Aynı ada sahip yeni dosyaların yaratılması ve değiştirilmesi
- 28. Ubuntu'da git-gui yeni dizinleri göstermiyor
- 29. LDAP kimliği doğrulanmış kullanıcısı, sonar için oluşturulan tüm yeni oturum açma işlemleri için sonar'da oluşturulan gruptan silinir.
- 30. Pandalar: İadeler verisinden [100'den başlayarak] [100'den başlayarak] oluşturma
Lütfen yeni oluşturduğunuz şeyin ne olduğunu belirtin. Son saat içinde? Son gün? Bir yıldan beri mi? Bir dizin ağacı oluşturmayı biliyorsanız, neden dosya özelliklerine erişmek için 'os.lstat' kullanmıyorsunuz? – hochl
Son saat içinde .... – nsh
sonra 'st = os.lstat (dosyayolu)' ve 'st.st_mtime' alanını kullanın ve şu andaki zamanın farkının 1800'den az olup olmadığını kontrol edin - işte bu kadar. – hochl