Это был метод проб и ошибок, и я не могу получить то, что хочу.
Я обращаюсь к API, чтобы получить некоторую информацию. К сожалению, это единственный API, который получает эту информацию и для этого загружает двоичное содержимое файла и называет его:
folder\filename.whatever
то есть test\purpleMonkeyTest.docx
Во время звонка поступает еще много информации, но есть такая строка:
Saved the binary content to: /home/user/python/test\purpleMonkeyTest.docx
В некоторых файлах есть " или другие специальные символы, поэтому я не могу просто получить имя файла и удалить его как часть сценария, так как я не знаю, что нужно избегать.
Итак, моя цель - разделить линию и получить:
/home/user/python/test\purpleMonkeyTest.docx
тогда получите только:
/home/user/python/test\pu
тогда:
os.remove "/home/user/python/test\pu"*
Я думаю, что подстановочный знак должен работать для всех, если нет лучшего способа сделать это. Все сохраненные файлы имеют в себе символ \, так что я дошел до точки, когда я получаю все до \, но мне также нужны один или два символа после этого.
Вот что я пробовал:
def fileName(itemID):
import fnmatch
details = itemDetails(itemID, True) # get item id and file details
filepath = matchPattern((details), 'Saved the binary content to: *')
filepath = (filepath).split('\\')[0]
print(filepath)
#os.remove(re.escape(filepath))
return (matchPattern((details), 'Binary component: *'))
def matchPattern(details, pattern):
import fnmatch
return (fnmatch.filter((details), pattern)[0].split(": " ,1)[1])
Выход:
/home/user/python/test
purpleMonkeyTest.docx
Мне нужно имя файла на потом: это, собственно, и главная цель. Однако API загружает этот чертов файл автоматически.
Обновлено:
Ответ ниже работает для получения нужных мне символов. Os remove не удаляет файл.
OSError: [Errno 2] No such file or directory: '/home/user/python/test\\Re*'
Удалось заставить его работать с помощью glob, я думаю, os.remove не поддерживает Wild.
files = glob.glob((filepath)+"*")
for file in files:
os.remove(file)
Спасибо за помощь!!






Насколько я понимаю ваш вопрос, вы хотели бы получить 2 части - все между первым / и \ с двумя символами после этого, а затем все после \:
str = "Saved the binary content to: /home/user/python/test\purpleMonkeyTest.docx"
print (str[str.index("/"):str.rindex("\\") + 3])
print (str[str.rindex("\\") + 1:])
Выход
/home/user/python/test\pu
purpleMonkeyTest.docx