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

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

新規登録して質問してみよう
ただいま回答率
85.31%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

Q&A

2回答

3145閲覧

ディレクトリ内のファイル名のリストを、拡張子(.csvのみ)を限定して取得したい!!

yamayamaki

総合スコア4

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

リストボックス

ユーザーがリストから1つ以上のアイテムを選択できるようにするGUI要素です。

Python

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

0グッド

0クリップ

投稿2021/08/31 05:55

使用している言語

Python3

前提・実現したいこと

ディレクトリ内のファイル名のリストを、拡張子を限定して取得したいです!!

ディレクトリ内の全ファイルのリスト化なら、
os.listdir
をもちいてリストを取得できました。しかし、私が欲しいのは、ディレクトリ内の.csvファイルのみを抽出したリストで、
ディレクトリ内のサブディレクトリや.csvファイル以外のファイルはリストに含めたくありません。
そこで、
https://www.sejuku.net/blog/63568
のサイトを参考に、glob関数を用いてリスト取得を試みたのですが、うまくいきません。。。。

エラーを吐くわけでもなく、作成されるリストの中身が何も入っていない状態で返ってきます。

原因がわからず困っております。
よろしくお願いします!!

該当のソースコード

import os import glob # ディレクトリパス取得--------------------------------------------------- import tkinter as tk root=tk.Tk() root.withdraw() from tkinter import filedialog path_dir = filedialog.askdirectory() print(path_dir) # フォルダ内のファイル名のリスト取得--------------------------------------------------- https://pg-chain.com/python-listdir # ディレクトリ内の全ファイルのリスト化ならできた!! list_file = os.listdir(path_dir) # ディレクトリ内の.csvのみをリストとして取得したいのだが、うまくいかない!! list_file = os.listdir(glob.glob(os.path.join(path_dir,"*.csv")))

試したこと

os.path.join
の中身を見たところ、パスの接続記号がバックスラッシュになっていて、path_dir内のスラッシュと異なったので、念のために、os.path.joinを使わず、ベタ打ち文字列で入力しても結果は同じでした。

補足情報(FW/ツールのバージョンなど)

Python3
Anaconda navigator 1.9.12
Spyder3.3.6

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

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

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

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

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

guest

回答2

0

glob のドキュメントをよく読んで、どんな使い方ができるか調べてみましょう。

https://docs.python.org/ja/3/library/glob.html

こんな使い方が提示されていますよね。

>>> glob.glob('**/*.txt', recursive=True) ['2.txt', 'sub/3.txt']

投稿2021/08/31 06:15

mather

総合スコア6762

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

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

0

iist_file = os.listdir(glob.glob(os.path.join(path_dir,"*.csv")))

list_file = glob.glob(os.path.join(path_dir,"*.csv"))としてください。

投稿2021/08/31 06:09

can110

総合スコア38352

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

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

yamayamaki

2021/08/31 06:19

回答ありがとうございます!! 早速、試してみたのですが、 list_file = [] のままで、リストは空のままです。。。。
can110

2021/08/31 06:25

コチラの環境では問題なく動作します。対象ファイルが存在しないのでは? print(os.listdir(path_dir))なりで確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問