.asm
特定のディレクトリ内のすべてのファイルを反復処理し、それらに対して何らかのアクションを実行する必要があります。
これを効率的に行うにはどうすればよいでしょうか?
ベストアンサー1
上記の回答のPython 3.6バージョンでは、os
- ディレクトリ パスがstr
という変数内のオブジェクトとして存在すると仮定しますdirectory_in_str
。
import os
directory = os.fsencode(directory_in_str)
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue
あるいは再帰的に、pathlib
:
from pathlib import Path
pathlist = Path(directory_in_str).glob('**/*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
- 使用
rglob
置き換えるglob('**/*.asm')
rglob('*.asm')
- これは電話のようなものです
Path.glob()
'**/'
指定された相対パターンの前に追加されます:
- これは電話のようなものです
from pathlib import Path
pathlist = Path(directory_in_str).rglob('*.asm')
for path in pathlist:
# because path is object not string
path_in_str = str(path)
# print(path_in_str)
元の回答:
import os
for filename in os.listdir("/path/to/dir/"):
if filename.endswith(".asm") or filename.endswith(".py"):
# print(os.path.join(directory, filename))
continue
else:
continue