Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2016 21:36:59

fabucusake123
Зарегистрирован: 2016-04-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Краткое и полное имя файла

Есть программа, которая из подключаемого модуля получает имя файла. (Этот модуль нужен для того, чтобы выводить имена файлов, которые находятся на флешке на маленький текстовый экранчик, поэтому нужна краткая форма имени файла).
После этого нужно получить полное имя этого файла, в виде “/media/TRANSCEND/mod/file.gcode”. И передать полное имя программе для дальнейшей работы с этим файлом.
Программа и модуль для работы с дисплеем довольно крупные, поэтому выкладываю только ключевые моменты.
Модуль:

global nfile
nfile=images[i]
nfile=str(nfile)
print nfile
fullname=os.path.join('/media/', images[i])  
fullname =str(fullname)
print fullname  
return fullname

Команда print nfile выдает “file.gcode” (правильно), команда print fullname выдает “/media/file.gcode” (неправильно, нужно “/media/TRANSCEND/mod/file.gcode). То есть почему то опускаются промежуточные папки. Что с этим сделать?

Возможно, я изначально пошел по неправильному пути, нужно было сделать наоборот - на стадии сканировании флешки получать массив с полными именами файлов, а потом вызывать из массива отдельные элементы и от них откусывать только краткое имя? Если да, то как это можно сделать?
В Пайтоне есть функции для получения из полного имени файла его краткой формы? Пусть даже без расширения файла.

Отредактировано fabucusake123 (Апрель 6, 2016 21:38:01)

Офлайн

#2 Апрель 6, 2016 21:57:21

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Краткое и полное имя файла

os.path.split



Офлайн

#3 Апрель 6, 2016 23:48:43

fabucusake123
Зарегистрирован: 2016-04-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Краткое и полное имя файла

Решил проблему так: все файлы во всех папках получаю с помощью os.walk.
Их полные имена получаю с помощью os.path.join и пишу это дело в массив.
Как то так:

>>> path_f = []
>>> for d, dirs, files in os.walk('c:/mydir'):
	for f in files:
		path = os.path.join(d,f) # формирование адреса
		path_f.append(path) # добавление адреса в список
Чтобы вывести на текстовый экран только имя файла, откусываю из элементов массива имена с помощью os.path.basename.
В программу передаю отдельные элементы массива в полном виде и она их спокойно съедает. Все работает как надо. Спасибо, что натолкнули на мысль.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version