teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

フォルダ名取得部の説明追加

2017/11/02 02:47

投稿

magichan
magichan

スコア15898

answer CHANGED
@@ -40,4 +40,49 @@
40
40
  plt.colorbar(cm)
41
41
  plt.tight_layout()
42
42
  plt.show()
43
- ```
43
+ ```
44
+
45
+ ---
46
+
47
+ **【追記】**
48
+
49
+ ターゲットのファイルが
50
+ ``files = glob.glob("./*/target.csv")``
51
+ から
52
+ ``files = glob.glob("./*/datafile/target.csv")``
53
+ に変更されたとのことなので、一応説明。
54
+
55
+
56
+ 例えば、
57
+ ``file = "./AAA/BBB/CCC/target.csv"``
58
+ の場合、
59
+ ``os.path.dirname(file)``
60
+ を使うと
61
+ ``./AAA/BBB/CCC/target.csv`` から ``./AAA/BBB/CCC`` を抜き出すことができます。
62
+
63
+ 更にこの戻り値 ``./AAA/BBB/CCC``に対し
64
+ ``os.path.split()``
65
+ を使うと
66
+ ``['./AAA/BBB', 'CCC']`` と分割したリストを得ることができますので
67
+ このリストの2個目の要素を取得することで ``CCC`` を得ることができます。
68
+
69
+ つまり現状は
70
+ ```Python
71
+ date_str = os.path.split(os.path.dirname(file))[1]
72
+ # files = "./AAA/BBB/CCC/target.csv"
73
+ # にて 'CCC' が得られる
74
+ ```
75
+ という実装になっております。
76
+
77
+ で、今回は更に上の階層のフォルダ名は ``BBB`` を取得したいとのことですので、
78
+ 上記リストの1番目の要素 ``./AAA/BBB`` を更にもう一度
79
+ ``os.path.split()``
80
+ を使うことにより ``['./AAA', 'BBB']`` に分割し、このリストの2番目の要素を使用するとよいのではないでしょうか。
81
+
82
+ つまり
83
+ ```Python
84
+ date_str =os.path.split(os.path.split(os.path.dirname(file))[0])[1]
85
+ # files = "./AAA/BBB/CCC/target.csv"
86
+ # にて 'BBB' が得られる
87
+ ```
88
+ に書き換えると良いと思います。