Прямо из документации для BeautifulSoup , вы можете легко скрыть комментарии (или что угодно) с помощью extract()
:
from BeautifulSoup import BeautifulSoup, Comment
soup = BeautifulSoup("""1
23""")
comments = soup.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
print soup
# 1
# 23
Я вижу пару проблем с вашим кодом PowerShell:
Set-Location
не возвращает никакого вывода, поэтому переменная $database
пуста. foreach ($database in $database)
Вы используете ту же переменную, что должен удерживать список баз данных как переменную цикла. Используйте переменную как переменную цикла. Кроме того, поскольку $database
пуст (см. Выше), PowerShell просто пропустит цикл. psql
, иначе вы получите всю строку (включая информацию о владельце, кодировке и т. д.). --%
останавливает PowerShell от разбора остальной части командной строки, поэтому ваша переменная $database
в имени выходного файла не будет pg_dump
. Измените код на что-то вроде этого:
Set-Location 'E:\Exxellence\PostgreSQL\9.5\bin'
$databases = (.\psql -U postgres -l) -match '^ \S' | ForEach-Object {
($_ -split '\s+\|\s+')[0].Trim()
} | Where-Object {
$_ -match '^(beheer|forms|loket|kcs|mo|alfresco)$'
}
foreach ($db in $databases) {
.\pg_dump -h localhost -p 5432 -U postgres -F c -b -f "${db}.backup" $db
}
или вот так:
Set-Location 'E:\Exxellence\PostgreSQL\9.5\bin'
(.\psql -U postgres -l) -match '^ \S' | ForEach-Object {
($_ -split '\s+\|\s+')[0].Trim()
} | Where-Object {
$_ -match '^(beheer|forms|loket|kcs|mo|alfresco)$'
} | ForEach-Object {
.\pg_dump -h localhost -p 5432 -U postgres -F c -b -f "${_}.backup" $_
}
, и он должен делать то, что вы хотите.
Примечание. Фильтр для имен базы данных предполагает, что это точные имена. Если это только частичные имена, измените строку на $_ -match 'beheer|forms|loket|kcs|mo|alfresco'
.
Первый выпуск с вашим кодом PowerShell находится в цикле foreach. Попробуйте следующее:
ForEach ($database in $databases)
И измените имя переменной $ databases (1-я строка).
.\pg_dump
? – LotPings 13 July 2018 в 10:29pg_dump
- это внешняя команда, поэтому я бы не ожидал, что PowerShell будет работать с такими простыми аргументами. Но я был удивлен раньше. ^ _ ^; Тем не менее, это было бы моим первым взятием на экспорт, и я бы уточнил его, если бы на самом деле возникла ошибка. – Ansgar Wiechers 13 July 2018 в 10:36|
предполагается буквальным, его нужно экранировать с помощью обратного слэша'\s+\|\s+'
, в противном случае это альтернативныйOR
– LotPings 13 July 2018 в 10:57