2011-09-05 16 views
8

Sadece 'foo' ve 'bar' istediğim dosyaları split'ten bıraktım.Python ile dosya isimlerini bölme

dn = "C:\\X\\Data\\" 

dosyaları

f= C:\\X\\Data\\foo.txt 
f= C:\\X\\Dats\\bar.txt 

ben dn beri düşünce

f.split(".",1)[0] denedim ve .txt hayır, önceden tanımlanmış ı çıkarma olabilir vardır. Bölme benim için çalışmıyor.

cevap

26

Os.path'ten uygun yol işleme yöntemleri nasıl kullanılır?

>>> 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') 
+0

Daha accuratly, 'os.path'. – Keith

+2

Daha doğru, doğru. – Martlark

1

Bu iki satır uzantıları olmadan dosya adlarının bir listesini döndürür:

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

Size bazı kodunu bıraktım görünüyor. Dosya içeriğini bölmeye çalıştığını söyleyebilirim.

Sorununuzu çözmek için dizindeki dosyaların bir listesini kullanmanız gerekir. os.listdir'un sizin için ne yaptığı budur. Ayrıca daha sofistike bir bölünme ekledim. rsplit sağdan çalışır ve sadece bulduğu ilk .'u böler. İkinci bağımsız değişken olarak 1 dikkat edin.

2

Yol ve dosya adlarıyla ilgilenmek için, Python'da yerleşik olan os.path modülünü kullanmanız önerilir. Lütfen bu modülde dirname, basename ve split işlevlerine bakın.

-1

başka bir örnek

f.split('\\')[-1].split('.')[0]