2011-09-05 99 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]