Разделение имен файлов с помощью Python - PullRequest
11 голосов
/ 05 сентября 2011

У меня есть файлы, которые мне нужны только 'foo' и 'bar', оставшиеся от split.

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

файлы

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

Я пытался f.split(".",1)[0]

Я думал, поскольку dn и .txt предопределены, я могу вычесть, нет.Сплит у меня не работает.

Ответы [ 4 ]

38 голосов
/ 05 сентября 2011

Как насчет использования правильных методов обработки пути из 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')
1 голос
/ 05 сентября 2011

Для работы с путями и именами файлов лучше всего использовать встроенный модуль os.path в Python.Пожалуйста, посмотрите на функции dirname, basename и split в этом модуле.

1 голос
/ 05 сентября 2011

Эти две строки возвращают список имен файлов без расширений:

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

Кажется, вы пропустили какой-то код. Из того, что я могу сказать, вы пытаетесь разделить содержимое файла.

Чтобы исправить вашу проблему, вам нужно оперировать списком файлов в каталоге. Вот что os.listdir делает для вас. Я также добавил более сложный сплит. rsplit действует справа и разделяет только первые найденные .. Обратите внимание на 1 в качестве второго аргумента.

0 голосов
/ 05 сентября 2011

другой пример:

f.split('\\')[-1].split('.')[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...