ファイルに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. JSでRuby配列の出力を文字列に変換する方法は?
- 3. 入力に整数と文字列の両方を許可する方法は?
- 4. Unixシェルスクリプトでcurlコマンドの出力に文字列を取得する方法は?
- 5. Redisの出力文字列をビット列に変換する
- 6. 数字の文字列を文字に変換する方法
- 7. 文字列をdoubleに変換して出力する方法は?
- 8. []文字列を...文字列に変換する方法
- 9. 文字列を配列文字に変換する方法
- 10. 文字列と文字列のリストを文字列に変換する方法
- 11. Get-ChildItemの出力を文字列[]に変換する
- 12. pandasシリーズの出力を文字列に変換する
- 13. UNIXのkshで可変文字列を置き換えるためにsed
- 14. Cで入力文字列を大文字に変換する方法
- 15. MySQLクエリ文字列に変数を出力する方法は?
- 16. switch文が文字入力を文字列出力に変換しない
- 17. 文字列を1文字ずつの文字列に変換する方法
- 18. {{}}をPHPの可変文字に変換する方法
- 19. UTC時刻文字列をUnix時刻に変換する
- 20. jQuery/javascriptでフルタイム文字列をUnixタイムスタンプに変換する
- 21. TxtFieldで文字列と出力を文字列に変換して出力する - CodeNameOne
- 22. 文字列内の国際語を許可する方法
- 23. 入力文字列で通貨記号を許可する方法C#
- 24. 可変数の文字配列の要素を文字列に変換する方法
- 25. エスケープ文字を許可する文字列リテラルをスキャンする方法は?
- 26. 文字列をSCC文字に変換する方法
- 27. 出力の入力文字を別の文字に変換する方法はありますか? Datapower IBM
- 28. モールスコード変換で複数の文字を許可する
- 29. RegExp文字列フィルタリング - ` - '記号を許可する方法?
- 30. 文字列配列をtoStringメソッドの文字列に変換する方法
+1これは、他のPythonのバージョンで動作することができ、単にから機能および関連データをコピーします[ソースコード](http://hg.python.org/cpython/file/3.3/Lib/stat.py)。デモ:http://ideone.com/P45ChT –