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

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

新規登録して質問してみよう
ただいま回答率
85.37%
ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

Q&A

解決済

1回答

31183閲覧

拡張子抜きのファイル名を取得したい

firstbn

総合スコア11

ファイル

ファイルとは、文字列に基づいた名前又はパスからアクセスすることができる、任意の情報のブロック又は情報を格納するためのリソースです。

Python

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

0グッド

0クリップ

投稿2019/09/20 04:52

編集2019/09/20 05:07

pythonで複数のファイルが入っているフォルダから拡張子なしでファイル名だけを取得したいです。
もしくは拡張子ありで取得した後に消す方法でも可能です。
調べたところ最初からファイルまでをパスとして渡しているプログラムしか見当たらなかったため質問させていただきました。
実際のファイルの数は5000前後で名前の長さはバラバラですが、下記のdirのように拡張子がばらばらになっています。

dir

1a.wav 2b.txt 3c.png

python

1#これでファイル名までは取得できましたが、拡張子あり 2 3path='./dir' 4files = os.listdir(path)

宜しくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

手順

  1. os.path.basename でファイル名 (a.txt) を取得する。
  2. os.path.splitext でファイル名を名前と拡張子に分割し、名前の部分を取得する。

コード

python

1import os 2 3paths = ["test/a.wav", "test/b.txt", "test/c.png"] 4 5for p in paths: 6 name = os.path.splitext(os.path.basename(p))[0] 7 print(name) 8# a 9# b 10# c

pathlib を使ったやり方

python

1from pathlib import Path 2 3paths = ["test/a.wav", "test/b.txt", "test/c.png"] 4 5for p in paths: 6 name = Path(p).stem 7 print(name) 8# a 9# b 10# c

投稿2019/09/20 05:00

編集2019/09/20 05:01
tiitoi

総合スコア21956

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

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

firstbn

2019/09/20 05:04

早い回答本当にありがとうございます。 2つほどお聞きしたいことがあるのですが、 ・ファイルの中身が5000など多数の時 ・ファイルの名前の長さがばらばらの時 はどのようにしたら良いでしょうか。
tiitoi

2019/09/20 05:08

質問の内容はパス hoge/fuga/test.txt から test というファイル名を抜き出すということでよろしかったでしょうか。 そうであれば、ファイル数やファイル名の長さに関係なく、回答のコードでできると思います。
firstbn

2019/09/20 05:12

paths=["test/a.wav", "test/b.txt", "test/c.png"] のように記述できない(数が多過ぎて書くことができない)場合はどのようにすればよろしいのでしょうか
tiitoi

2019/09/20 05:16 編集

paths=["test/a.wav", "test/b.txt", "test/c.png"] の部分は「パスからファイル名を抽出するコード」が動作することを確認するためのサンプルです。例えば、あるフォルダ内にあるファイル一覧のパスを取得したい場合は glob を使用してください。 import glob paths = glob.glob("test/*") # test ディレクトリ内のファイルを返す。 https://qiita.com/HirosuguTakeshita/items/0e0850362c7eb3b10ea1
firstbn

2019/09/20 05:22

解決いたしました! 丁寧に教えてくださり本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問