#python #html #directory #path
#python #HTML #каталог #путь
Вопрос:
Я использую python для создания HTML-страниц. В корневой папке я создаю две папки A и B. В B есть b1.html , b2.html , и так далее. В папке A у меня есть A1.html и A2.html и так далее. В A1.html , при создании такого HTML-кода я создаю ссылки на bx.html на основе ключевого слова bx , встречающегося в A1.html .
Например:
stringsCounterNames = re.findall('[([A-Z].*?)]',line) #find the keywords
stringsCounterNames = list(dict.fromkeys(stringsCounterNames)) #remove duplicates
counter_path="B_Folder"
if (len(stringsCounterName)>0):
for stringCounter in stringsCounterNames:
targetStr=counter_dic[stringCounter]
target = '<a href="' counter_path '/' targetStr '.html">' stringCounter '<a>'
line = re.sub(stringCounter, target, line)
print(line)
В приведенном выше коде будет создана ссылка, подобная этой:
<a href="B_Folder/b1.html">stringCounter</a>
Итак, проблема заключается в том, что при просмотре A1.html , нажав на ссылку, она переходит в: File:rootFolder/A_Folder/B_Folder/b1.html
, поэтому ссылка никогда не работает, поскольку и A_Folder, и B_Folder являются дочерними папками в корневой папке.
Я могу переместить папку B_Folder в папку A_Folder, чтобы решить проблему, но я хочу упорядочить файлы. Есть ли способ легко это исправить? Я попытался изменить «counter_path» на «..B_Folder» или «.B_Folder», никогда не работает. Я не могу указать абсолютный путь к нему, поскольку он будет перенесен в какую-либо другую корневую папку. Спасибо!
Ответ №1:
Относительный путь counter_path="../B_Folder"
должен работать.
Ваши предложения близки, но оба ..B_Folder
и .B_Folder
являются допустимыми именами папок; следовательно, относительный путь по-прежнему будет root/A_Folder/..B_Folder
или root/A_Folder/.B_Folder
. Однако имена папок ..
и .
относятся к родительской папке и текущей папке соответственно. Добавление ..
в отдельную папку (следовательно, изменение пути к root/A_Folder/../B_Folder
) работает: от root/A_Folder
, переход к ..
изменяет путь к root
, с которого вы можете перейти B_Folder
.
Дополнительные примеры с .
И ..
см. В Этом Ответе на сообщение Stack Exchange.