bir istatistik çıktı dönüştürmek için: rw-r--r--
Unix dünyasında bilindiği gibi? Bazı olağan koşullarda verilen aşağıdaki fonksiyonu bunu başarmak olacaktırnasıl nasıl böyle bir dizeye oradan alırım, Unix izinleri dize
7
A
cevap
11
Python 3.3 beri şunu kullanabilirsiniz stat.filemode
:
In [7]: import os, stat
In [8]: print(stat.filemode(os.stat('/home/soon/foo').st_mode))
-rw-r--r--
In [9]: ls -l ~/foo
-rw-r--r-- 1 soon users 0 Jul 23 18:15 /home/soon/foo
2
, (yani Windows altında veya SELinux ile test etmedim). gibi sorular
import stat
def permissions_to_unix_name(st_mode):
permstr = ''
usertypes = ['USR', 'GRP', 'OTH']
for usertype in usertypes:
perm_types = ['R', 'W', 'X']
for permtype in perm_types:
perm = getattr(stat, 'S_I%s%s' % (permtype, usertype))
if st_mode & perm:
permstr += permtype.lower()
else:
permstr += '-'
return permstr
Bu temel bir dize oluşturur. Bununla birlikte, bu daha fazla veriyi görüntülemek için de geliştirilebilir, örn. bir dizin (d
) ya da bir sembolik (l
) olup. Bunu geliştirmek için çekinmeyin. Böyle
4
şey:
import stat, os
def permissions_to_unix_name(st):
is_dir = 'd' if stat.S_ISDIR(st.st_mode) else '-'
dic = {'7':'rwx', '6' :'rw-', '5' : 'r-x', '4':'r--', '0': '---'}
perm = str(oct(st.st_mode)[-3:])
return is_dir + ''.join(dic.get(x,x) for x in perm)
...
>>> permissions_to_unix_name(os.stat('.'))
'drwxr-xr-x'
>>> ls -ld .
drwxr-xr-x 62 monty monty 4096 Jul 23 13:23 ./
>>> permissions_to_unix_name(os.stat('so.py'))
'-rw-rw-r--'
>>> ls -ld so.py
-rw-rw-r-- 1 monty monty 68 Jul 18 15:57 so.py
İlgili konular
- 1. Nasıl bir dizeye
- 2. javascript'te bir dize bir Unix zaman damgasına nasıl dönüştürülür?
- 3. Dize dosyada değiştirilmesi Unix
- 4. Bir UIColor'u onaltılık bir dizeye nasıl dönüştürürüm?
- 5. nasıl unix
- 6. EJS şablonunu bir dizeye nasıl dönüştürebilirim?
- 7. Adından nasıl bir seçici alırım?
- 8. org.eclipse.xsd.XSDSchema örneği bir dizeye nasıl dönüştürülür?
- 9. StreamReader'ı bir dizeye nasıl dönüştürebilirim?
- 10. Nasıl böyle bir şey sayılarla bir dize bölebilirsiniz (23)
- 11. Vba'da bir dizeye çift tırnak nasıl yazarım?
- 12. "Eski değeri" bir ReactiveCocoa sinyalinden nasıl alırım?
- 13. tüm dosyaların bir dize değiştirin - Unix
- 14. Yol çizgisinde dize enterpolasyonlu .less dosyalarını nasıl alırım?
- 15. Ham dizeye yeni satırlar eklemeden ham dize değişmezi nasıl sarılır?
- 16. KDoc belgelerini nasıl alırım?
- 17. Python urandom'unu bir dizeye nasıl dönüştürebilirim?
- 18. Enum değerini bir dizeye dönüştürme nasıl yapılır?
- 19. nasıl Numpy bir diziye bir dize değeri atamak? Böyle bir diziye bir dize atamak çalıştığınızda
- 20. Yol, sembolik bağlantılar içerdiğinde bir dizini unix/linux'da nasıl geri alırım?
- 21. Unix
- 22. Perl'de Unix grep'i nasıl uygularım?
- 23. Bir Razor görünümünü bir dizeye nasıl dönüştürürsünüz?
- 24. Groovy'deki bir dosyayı bir dizeye nasıl okunur?
- 25. Python'da bir dizeye bir booleanı nasıl bağlarım?
- 26. Değişken, Unix C sorusu sayısı ile dize
- 27. Bir dizenin içindeki son harfi nasıl bulur ve dizinini alırım? ı testi denilen bir dize var diyelim
- 28. Bir dizeyle ayrılmış birden çok dizeye Javascript dize dizisi
- 29. Listeyi bir dizeye dönüştürme
- 30. Değeri anonim bir ifadeden nasıl alırım?
+1 Belgede gerek diğer piton sürümlerinde işe basitçe dan işlevini ve ilgili verileri kopyalama [kaynak kodu] (http://hg.python.org/cpython/file/3.3/Lib/stat.py). Demo: http://ideone.com/P45ChT –