私はファイルから、 'foo'と 'bar'だけを分割して残したいと思っています。ファイル名をPythonで分割する
dn = "C:\\X\\Data\\"
ファイル
f= C:\\X\\Data\\foo.txt
f= C:\\X\\Dats\\bar.txt
私はDNと.txtのは、私はいや、引く可能性が事前に定義されているので思ったf.split(".",1)[0]
を試してみました。 スプリットは私にとっては機能しません。
私はファイルから、 'foo'と 'bar'だけを分割して残したいと思っています。ファイル名をPythonで分割する
dn = "C:\\X\\Data\\"
ファイル
f= C:\\X\\Data\\foo.txt
f= C:\\X\\Dats\\bar.txt
私はDNと.txtのは、私はいや、引く可能性が事前に定義されているので思ったf.split(".",1)[0]
を試してみました。 スプリットは私にとっては機能しません。
os.pathから適切なパス処理メソッドを使用する方法はありますか?
この2行は、拡張子なしのファイル名のリストを返す:
import os
[fname.rsplit('.', 1)[0] for fname in os.listdir("C:\\X\\Data\\")]
あなたには、いくつかのコードを残してきたようです。私はあなたがファイルの内容を分割しようとしていると言うことから。
問題を解決するには、ディレクトリ内のファイルのリストを操作する必要があります。それはos.listdir
があなたのためにするものです。私はまた、より洗練された分割を追加しました。 rsplit
は右側から操作され、見つかった最初の.
だけが分割されます。 2番目の引数として1
に注目してください。
パス名とファイル名を処理するには、組み込みモジュールos.path
をPythonで使用することをお勧めします。そのモジュール内の関数dirname
、basename
およびsplit
を見てください。
>>> f = 'C:\\X\\Data\\foo.txt'
>>> import os
>>> os.path.basename(f)
'foo.txt'
>>> os.path.dirname(f)
'C:\\X\\Data'
>>> os.path.splitext(f)
('C:\\X\\Data\\foo', '.txt')
>>> os.path.splitext(os.path.basename(f))
('foo', '.txt')
別の例:accuratly
f.split('\\')[-1].split('.')[0]
より、 'os.path'。 – Keith
もっと正確に、正確に。 – Martlark