Я пытаюсь создать одну таблицу SQL из нескольких файлов .pbf.
Я использую osm2pg sql для загрузки файла в удаленную базу данных и пытаюсь автоматизировать процесс, используя python и pexpect.
Когда первая команда osm2pg sql выполняется успешно, последующие команды, похоже, застряли после печати «Использование анализатора PBF».
Вот мой код:
child = pexpect.spawn('bash', timeout=20000)
child.logfile_read = sys.stdout.buffer # show output for debugging
filenames = os.listdir('pbf_files')
for i, filename in enumerate(filenames):
print(filename)
upload_command_args = [
"pbf_files/{}".format(filename),
"-l",
"-s",
"-d", db_name,
"-U", username,
"-P", port,
"-H", host,
"-W",
"-S", "default.style",
"-r", "pbf",
"-p", table_name,
"--hstore",
]
# Need the append option since table already exists after first iteration
if i > 0:
upload_command_args = upload_command_args + ["--append"]
print(upload_command_args)
child.sendline('osm2pgsql ' + ' '.join(upload_command_args))
child.expect('Password:')
child.sendline('myFakePass')
child.expect('Osm2pgsql took .+ overall')
child.close()
sys.exit(child.status)
0-я итерация работает нормально, но 1-я застревает после того, как оболочка напечатает:
Reading in file: pbf_files/my_partition_1.pbf
Using PBF parser.
Не понимаю ли я, как работает .expect ()?