【发布时间】:2011-11-10 08:56:45
【问题描述】:
我有一些文件,我只想要拆分后的 'foo' 和 'bar'。
dn = "C:\\X\\Data\\"
文件
f= C:\\X\\Data\\foo.txt
f= C:\\X\\Dats\\bar.txt
我试过f.split(".",1)[0]
我想既然 dn 和 .txt 是预定义的,我可以减去,不。 拆分对我不起作用。
【问题讨论】:
我有一些文件,我只想要拆分后的 'foo' 和 'bar'。
dn = "C:\\X\\Data\\"
文件
f= C:\\X\\Data\\foo.txt
f= C:\\X\\Dats\\bar.txt
我试过f.split(".",1)[0]
我想既然 dn 和 .txt 是预定义的,我可以减去,不。 拆分对我不起作用。
【问题讨论】:
使用python3和pathlib:
import pathlib
f = 'C:\\X\\Data\\foo.txt'
print(pathlib.PureWindowsPath(f).stem)
将打印:'foo'
【讨论】:
帮助您的简单示例。
import os
from os import path
path_to_directory = "C:\\X\\Data"
for f in os.listdir(path_to_directory):
name , extension = path.splitext(f)
print(name)
foo
bar
【讨论】:
如何使用 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')
【讨论】:
另一个例子:
f.split('\\')[-1].split('.')[0]
【讨论】:
要处理路径和文件名,最好使用Python中的内置模块os.path。请查看该模块中的函数dirname、basename 和split。
【讨论】:
这两行返回一个不带扩展名的文件名列表:
import os
[fname.rsplit('.', 1)[0] for fname in os.listdir("C:\\X\\Data\\")]
您似乎遗漏了一些代码。据我所知,您正在尝试拆分文件的内容。
要解决您的问题,您需要对目录中的文件列表进行操作。这就是os.listdir 为您所做的。我还添加了更复杂的拆分。 rsplit 从右边开始运算,只会拆分它找到的第一个 .。注意 1 作为第二个参数。
【讨论】: