2011-09-05 174 views
8

我有隻需要'foo'和'bar'拆分的文件。用python拆分文件名

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

文件

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

我已經試過f.split(".",1)[0]

我自以爲DN和.txt是預定義的,我可以減,都能跟得上。 斯普利特不適合我。

回答

26

如何使用os.path中正確的路徑處理方法?

>>> 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

更爲準確,能夠'os.path'。 – Keith

+2

更準確,更準確。 – Martlark

1

這兩行返回的文件名列表,而擴展:

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

看來你忽略了一些代碼。從我可以告訴你試圖拆分文件的內容。

要解決您的問題,您需要對目錄中的文件列表進行操作。這就是os.listdir爲你所做的。我還添加了更復雜的分割。 rsplit從右側運行,並且只會拆分它找到的第一個.。請注意0​​作爲第二個參數。

2

要處理路徑和文件名,最好在Python中使用內置模塊os.path。請查看該模塊中的功能dirnamebasenamesplit

-1

另一個例子:

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