2016-11-22 7 views
1

複数のファイル(.shで終わるシェル、いくつかのテキストファイル、.py拡張子で終わるいくつかのPythonファイル)を含むディレクトリがあります。os.chmodを使用して複数のファイルのパーミッションを変更する方法

os.chmodコマンドを使用してすべてのシェルファイル(.shで終わる)に実行権限を追加します。基本的に私はこれをしたい:

chmod +x *.sh 

私はこれを行うことによって、最初のアクセス権のチェックを試してみました:

>>> s = os.stat('*.ksh') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
OSError: [Errno 2] No such file or directory: '*.ksh' 

しかし、それは動作しません。 どうやってこれをpythonicの方法で行うことができますか?

答えて

4

ファイルのリストを取得するにはglob moduleを使用し、それらをループ:

import glob, os, stat 

for name in glob.glob('*.sh'): 
    print(name, os.stat(name)) 

そして、あなたが実際に実行可能なモードビットを追加するthis questionごとにos.chmod()を使用することができます。

for name in glob.glob('*.sh'): 
    st = os.stat(name) 
    os.chmod(name, st.st_mode | stat.S_IEXEC) 
+0

を忘れましたグロブについてベンにありがとう! – Ayush

関連する問題