Jeśli uruchomisz os.stat(path)
na pliku, a następnie weź jego parametr , w jaki sposób dojdziesz stamtąd do takiego łańcucha znaków: rw-r--r--
znany ze świata Uniksa?Jak przekonwertować wyjście stat do łańcucha uprawnień uniksów
7
A
Odpowiedz
11
Od Pythona 3.3 można użyć 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
Następująca funkcja pozwoli to osiągnąć, biorąc pod uwagę pewne typowe okoliczności (tj. Nie testowałem tego pod Windows lub przy użyciu SELinux).
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
Powoduje utworzenie podstawowego ciągu znaków na żądanie. Można to jednak poprawić również w celu wyświetlania dalszych danych, np. czy jest to katalog (d
) czy dowiązanie symboliczne (l
). Możesz go poprawić.
4
coś takiego:
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
Powiązane problemy
- 1. Perl dołącza wyjście printf do łańcucha
- 2. Drukowanie uprawnień do plików, takich jak "ls -l" przy użyciu stat (2) w C
- 3. Jak przekonwertować listę listy <String> do łańcucha CSV
- 4. Jak potokować wyjście wyrażenia Invoke do ciągu?
- 5. Jak eksportować wyjście Selenium do PHP?
- 6. Using Struct Stat()
- 7. Obiekt JS do łańcucha JSON?
- 8. Interpretacja wyjściu perf stat
- 9. Zastosuj "maskę" do łańcucha
- 10. dplyr do klasy wyjście data.frame
- 11. Jak dodać wyjście do xpath
- 12. Jak dołączyć "do łańcucha znaków
- 13. Jak dołączyć kawałek do łańcucha?
- 14. Korzystanie z funkcji stat Pythona, aby skutecznie pozbyć się właściciela, grupy i innych uprawnień
- 15. numpy tablica znaków do łańcucha
- 16. Jak przepisać wyjście dla pętli for na wyjście Stream?
- 17. Dopasowanie do łańcucha Regex?
- 18. przekonwertować do formatu tz
- 19. int do łańcucha szesnastkowego
- 20. Binutils stat nielegalna opcja -c
- 21. Bash, jak wartość skrótu łańcucha?
- 22. Wyjście QVector3D do QString
- 23. Jak zrobić wyjście GCC na standardowe wyjście?
- 24. zmiana uprawnień plików w pythonie
- 25. Dołącz bajt do łańcucha?
- 26. Uwierzytelnianie lub błąd uprawnień, nie ma uprawnień do katalogu zdalnego
- 27. Używanie stat do sprawdzania, czy plik jest wykonywany w C
- 28. Jak zapisać wyjście błędów gcc do pliku
- 29. Jak przypisać wyjście polecenia do tablicy?
- 30. Jak przekierować wyjście konsoli do pliku tekstowego
+1 Może pracować w innych wersjach Pythona, jak również, po prostu skopiuj funkcji i danych powiązanych z [kod źródłowy] (http://hg.python.org/cpython/file/3.3/Lib/stat.py). Wersja demonstracyjna: http://ideone.com/P45ChT –