Два трюка . В основном, инвертирование HTML-кода ваших желаемых элементов в HTML и использование ~
Операторы следующего сиблинга :
float-right
+ инвертируют порядок HTML элементы
div{ /* Do with the parent whatever you know just to make the
inner float-right elements appear where desired */
display:inline-block;
}
span{
float:right; /* float-right the elements! */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
background:red;
}
<div>
<!-- Reverse the order of inner elements -->
<span>5</span>
<span>4</span>
<span>3</span>
<span>2</span>
<span>1</span>
</div>
direction: rtl;
+ инвертирует порядок внутренних элементов
.inverse{
direction: rtl;
display: inline-block; /* inline-block to keep parent at the left of window */
}
span:hover ~ span{ /* On hover target it's "previous";) elements */
background:gold;
}
Hover one span and see the previous elements being targeted!<br>
<div class="inverse">
<!-- Reverse the order of inner elements -->
<span>5</span>
<span>4</span>
<span>3</span>
<span>2</span>
<span>1</span>
</div>
Вот версия, которая ожидает pathlib.Path
, как введено.
# Recusively copies the content of the directory src to the directory dst.
# If dst doesn't exist, it is created, together with all missing parent directories.
# If a file from src already exists in dst, the file in dst is overwritten.
# Files already existing in dst which don't exist in src are preserved.
# Symlinks inside src are copied as symlinks, they are not resolved before copying.
#
def copy_dir(src, dst):
dst.mkdir(parents=True, exist_ok=True)
for item in os.listdir(src):
s = src / item
d = dst / item
if s.is_dir():
copy_dir(s, d)
else:
shutil.copy2(str(s), str(d))
Примечание, что эта функция требует Python 3.6, который является первой версией Python где os.listdir()
поддержки подобные пути объекты, как введено. Если необходимо поддерживать более ранние версии Python, можно заменить listdir(src)
listdir(str(src))
.
Python 3.8 представил dirs_exist_ok
аргумент к shutil.copytree
:
Рекурсивно копируют все дерево каталогов, базированное в src к каталогу, названному dst, и возвратите целевой каталог. dirs_exist_ok диктует, повысить ли исключение в случае, если dst или любой недостающий родительский каталог уже существуют.
Поэтому с Python 3.8 + это должно работать:
import shutil
shutil.copytree('bar', 'foo')
shutil.copytree('baz', 'foo', dirs_exist_ok=True)
Я предполагаю, что самым быстрым и простым способом было бы заставить python вызывать системные команды ...
пример ..
import os
cmd = '<command line call>'
os.system(cmd)
Tar и gzip вверх по каталогу .... распаковать и распаковать каталог в желаемом месте.
да?
документы явно указывают, что целевой каталог должен не существовать :
Целевой каталог, названный
dst
, еще не должен существовать ; он будет создан вместе с отсутствующими родительскими каталогами.
Я думаю, что лучше всего сделать os.walk
второй и все последующие каталоги, каталог и файлы copy2
и выполнить дополнительные copystat
для каталогов. В конце концов, это именно то, что делает copytree
, как описано в документации. Или вы можете скопировать
и copystat
каждый каталог / файл и os.listdir
вместо os.walk
.