ファイルにos.stat(path)
を実行してからst_mode
パラメータを取得すると、そこから次のような文字列に変換されます:rw-r--r--
Unixの世界では知られていますか?stat出力をunixのアクセス許可文字列に変換する方法
7
A
答えて
11
のPython 3.3以降に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
通常の状況では(Windowsや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
これは、尋ねられるように基本的な文字列を生成します。しかし、これを改善してさらなるデータを表示することもできる。それがディレクトリ(d
)かシンボリックリンク(l
)であるかどうか。それを気軽に改善してください。
4
このような何か:
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
関連する問題
- 1. 文字列をjavascriptのUnixタイムスタンプに変換する方法は?
- 2. Get-ChildItemの出力を文字列[]に変換する
- 3. MySQLクエリ文字列に変数を出力する方法は?
- 4. 文字列を1文字ずつの文字列に変換する方法
- 5. TxtFieldで文字列と出力を文字列に変換して出力する - CodeNameOne
- 6. 文字列をSCC文字に変換する方法
- 7. UTC時刻文字列をUnix時刻に変換する
- 8. RegExp文字列フィルタリング - ` - '記号を許可する方法?
- 9. モールスコード変換で複数の文字を許可する
- 10. 文字列をPHPの配列に変換する方法
- 11. 文字列を文字列に変換する方法hash_map(文字列、文字列、stringHashFunction>をLinuxでC++
- 12. C#:バイト配列を文字列に変換してコンソールに出力する
- 13. null文字列を空の文字列に変換する方法
- 14. emoji❤withで文字列を変換する方法、regexでこのURLのように文字列に変換
- 15. ArrayListを文字列配列(string [])に変換する方法C#
- 16. PHP:配列を文字列に変換する方法
- 17. 列全体をBase64文字列に変換する方法は?
- 18. JSON配列を文字列に変換する方法
- 19. Ruby配列から取り出した文字列をC/C++文字列に変換する方法
- 20. Matlab。ユーザー入力行列を文字列に変換する
- 21. パターンの文字をunixに置き換える方法
- 22. itertools.permutationsの出力をタプルのリストから文字列のリストに変換する
- 23. 文字列をJSON変換可能な配列に変換する
- 24. 文字列の負の値をdoubleに変換する方法
- 25. Jsonの文字列をAndroidのListViewに変換する方法
- 26. istream全体を標準出力と文字列に出力する方法
- 27. 文字列をC++でコンソールに出力する方法
- 28. Javascriptの文字列変換なし出力
- 29. XQueryで文字列の出力内容をエンティティに変換しないようにする方法
- 30. ストリームの結果を文字列に変換する方法
+1これは、他のPythonのバージョンで動作することができ、単にから機能および関連データをコピーします[ソースコード](http://hg.python.org/cpython/file/3.3/Lib/stat.py)。デモ:http://ideone.com/P45ChT –