2011-09-05 4 views
8

私はファイルから、 '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]

を試してみました。 スプリットは私にとっては機能しません。

答えて

26

os.pathから適切なパス処理メソッドを使用する方法はありますか?

+0

より、 'os.path'。 – Keith

+2

もっと正確に、正確に。 – Martlark

1

この2行は、拡張子なしのファイル名のリストを返す:

import os 
[fname.rsplit('.', 1)[0] for fname in os.listdir("C:\\X\\Data\\")] 

あなたには、いくつかのコードを残してきたようです。私はあなたがファイルの内容を分割しようとしていると言うことから。

問題を解決するには、ディレクトリ内のファイルのリストを操作する必要があります。それはos.listdirがあなたのためにするものです。私はまた、より洗練された分割を追加しました。 rsplitは右側から操作され、見つかった最初の.だけが分割されます。 2番目の引数として1に注目してください。

2

パス名とファイル名を処理するには、組み込みモジュールos.pathをPythonで使用することをお勧めします。そのモジュール内の関数dirnamebasenameおよびsplitを見てください。

-1
>>> 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] 
関連する問題