2015-11-02 4 views
1

Я хочу, чтобы ввести два файла с одинаковым именем, но другим расширением, выполнив вход только один:Входные два файла с одинаковым именем, но другим расширением

tkMessageBox.showinfo(title="Info",message="Please input both the .rwh file") 

# the filetype mask (default is all files) 
mask = \ 
[("files","*.rwh"), 
("All files","*.*")] 

title = 'Open'     
files = askopenfilenames(initialdir=self.initial_dir, filetypes=mask,title=title) 

Тогда ту часть, которую я не знаю, как это сделать. Он должен создать файл-объект, прочитав ввод файла, а затем, прочитав имя, создайте еще одно имя с таким же именем, но с другим расширением (.row).

Впоследствии я вызываю функцию, которая использует оба файла.

Файлы имеют разное расширение, поскольку они содержат различную информацию, оба файла находятся в одной папке.

ответ

0

Преобразование имени файла в строку и использование str.join() для добавления окончаний файла.

Это должно работать, если окончание файла не отличается от случая к случаю.

2

Предполагая, что вы уже знаете, одно имя файла, например:

file = 'test.rwh' 

тогда вы просто могли replace его .row, другой расширение файла:

file.replace('.rwh','.row') 

это дает test.row. В случае наличия нескольких .rwh значений вы можете использовать комментарии Peter Вуда или использовать, например, регулярные выражения:

import re 
file = 'test.rwh.rwh' 
re.sub('.rwh$','.row',file) 

возвращает test.rwh.row.

+2

Вполне возможно, что имя файла может быть '.rwh' в других позициях, чем в конце. –

+1

См. [Смена справа налево] (http://stackoverflow.com/questions/9943504/right-to-left-string-replace-in-python), особенно [этот ответ] (http: // stackoverflow .com/а/9943875/1084416). –

3

os.path.splitext позволяет получить имя корневой:

>>> import os 

>>> filename = '/my/filename.rwh' 
>>> root, ext = os.path.splitext(filename) 
>>> root 
'/my/filename' 

>> root + '.row' 
'/my/filename.row' 
Смежные вопросы