任意のフォルダ一覧を取得する際に少し調べたので備忘録として。
環境
OS:Windows 10
言語:Python 3.6.5
フォルダの区切り
Pythonでフォルダを取り扱う場合に、エクスプローラからパスコピーするとバックスラッシュ(\)で区切った形式でコピーされる。
GetDir_1.py
# エクスプローラからコピーしたパスをそのまま使った場合
path = "C:\hoge\"
dirs = []
for f in os.listdir(path):
if os.path.isdir(path + f):
dirs.append(f)
print(dirs)
これだと
SyntaxError: EOL while scanning string literal
になる。
回避策
①フォルダの区切りをスラッシュ(/)に変更する。
GetDir_2.py
# フォルダの区切りを/に変更
path = "C:/hoge/"
dirs = []
for f in os.listdir(path):
if os.path.isdir(path + f):
dirs.append(f)
print(dirs)
②バックスラッシュを重ねる。
GetDir_3.py
# フォルダの区切りを/に変更
path = "C:\\hoge\\"
dirs = []
for f in os.listdir(path):
if os.path.isdir(path + f):
dirs.append(f)
print(dirs)
③raw文字列を使う。
GetDir_4.py
# raw文字列を使用
# この場合パスの末尾に「\」は付けれないので注意
path = r"C:\hoge"
dirs = []
for f in os.listdir(path):
if os.path.isdir(path + f):
dirs.append(f)
print(dirs)