質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1656閲覧

【Python】 サブディレクトリ内の特定ファイル名のcsvファイルをDataframe形式で繰り返し処理したい

tsumiki_kuzushi

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/06/28 06:08

編集2021/06/28 07:34

tkinter の filedialog を用いてメインディレクトリを選択し、
選択されたメインディレクトリ内にあるサブディレクトリに存在する特定ファイル名のcsvファイルを読み込む。
そのcsvファイルそれぞれについてDataframe形式にて処理を行いたいです。

filedialog を用いることで特定ファイル名を単独で選択し処理することはできましたが、そのファイルが格納されているサブディレクトリは複数あるため、繰り返し処理を行いたいです。また、サブディレクトリには複数のcsvファイルがあり、その中で処理を行いたいcsvファイルは1つであるため、該当のcsvファイル名を指定して処理をさせたいです。

以下のメインディレクトリのパスを取得するところまでは来ましたが、それ以降の処理がわかりません。

ご教示よろしくお願いいたします。

Python

1# import library 2import pandas as pd 3import tkinter as tk 4from tkinter import filedialog 5import os 6 7## フォルダ読込 8dir = r'C:\Users\ユーザー名\Desktop' # 初期ディレクトリ 9fld = filedialog.askdirectory(initialdir = dir) # メインディレクトリ選択 10 11files = os.listdir(fld) # 親ディレクトリ内のデータ一覧 12files_dir = [f for f in files if os.path.isdir(os.path.join(fld, f))] # filesの内、ディレクトリのみ 13fld = str(fld+"/") 14 15 16#データフレームで行いたい処理の一部 17df1 = df1.drop(['key','name','x','y','z'],axis=1) 18df1 = df1.T 19202122

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

globを使ってファイルの一覧をとるのでしょう。

python

1>>> import os 2>>> import glob 3>>> 4>>> fld = r'C:\work\test' 5>>> all_csvs = glob.glob(os.path.join(fld, r'**.csv')) 6>>> print(all_csvs) 7['C:\work\test\dir1\nameA.csv', 'C:\work\test\dir1\nameB.csv', 'C:\work\test\dir2\nameA.csv', 'C:\work\test\dir2\nameX.csv']

というコードだと、全部出てきてしまいますが、

python

1>>> import os 2>>> import glob 3>>> 4>>> fld = r'C:\work\test' 5>>> filename = 'nameA.csv' 6>>> selected_csvs = glob.glob(os.path.join(fld, r'*', filename)) 7>>> print(selected_csvs) 8['C:\work\test\dir1\nameA.csv', 'C:\work\test\dir2\nameA.csv']

というコードなら、複数のディレクトリから特定の名前のcsvのパスの一覧を取り出すことができます。

filenameをどうやってtkinterで取得するかはいくらでも方法がありますので、ご自身で考えてください。

投稿2021/06/28 10:14

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tsumiki_kuzushi

2021/06/29 00:47

解決いたしました。ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問