【Python】UIボタンにドラッグ&ドロップ機能をつける
shamimatsu
三味松ブログ
teratailで以前質問させて頂き解決した内容ですが、「フルパスに含まれるフォルダ名を取得」は個人的によく使う内容だったためブログにも残したいと思います。
\(バックスラッシュ)で階層ごとに分けてくれるので便利です。
import pathlib
jpg_path = pathlib.Path(r'D:\python\photo\cloud\jpg\test.jpg')
print(jpg_path.parts)
# ('D:\\', 'python', 'photo', 'cloud', 'jpg', 'test.jpg')
"""cloudを取得したい場合"""
print(jpg_path.parts[-3])
"""photoを取得したい場合"""
print(jpg_path.parts[-4])
先ほど分けた階層をDドライブからphotoまでだけ結合したいとします。
('D:\\', 'python', 'photo', 'cloud', 'jpg', 'test.jpg')
('D:\\', 'python', 'photo)
jionの中にある*(dir_parts)に注目してください。これで結合されます
import pathlib
import os
jpg_path = pathlib.Path(r'D:\python\photo\cloud\jpg\test.jpg')
print(jpg_path.parts[0:-3])
# ('D:\\', 'python', 'photo')
dir_parts = jpg_path.parts[0:-3]
photo_path = os.path.join(*(dir_parts))
print(photo_path)
# D:\python\photo
mayaはまだpython2.7でpathlibモジュールは使えないため、別の方法です。
python2.7は力技感がありますね。
# -*- coding: utf-8 -*-
import os
jpg_path = r'D:\python\photo\cloud\jpg\test.jpg'
"""cloudを取得したい場合"""
dirname1 = os.path.dirname(jpg_path)
dirname2 = os.path.dirname(dirname1)
result1 = os.path.basename(dirname2)
print result1
"""
photoを取得したい場合
os.path.dirnameで掘り下げる
"""
dirname3 = os.path.dirname(dirname2)
result2 = os.path.basename(dirname3)
print result2