Langkau ke kandungan utama

Eksport dan import kandungan

Glasswall menyediakan keupayaan untuk mengeksport dan mengimport item kandungan bagi jenis fail yang disokong. Ini membolehkan komponen dalaman fail yang diproses disediakan kepada proses dan aplikasi luaran untuk pemprosesan tambahan di luar domain Glasswall Embedded Engine. Setelah dieksport, komponen ini boleh disahkan secara luaran sebelum Glasswall Engine mengimport komponen tersebut dan menyusun semula fail.

Fail mesti diproses oleh Glasswall Embedded Engine sebanyak dua kali; sekali untuk mengekstrak pakej yang mengandungi komponen yang membentuk sesuatu fail (eksport), dan kali kedua untuk menyepadukan semula komponen yang telah dianalisis dan/atau diubah suai secara luaran kembali ke dalam fail (import). Lihat Content Export & Import.

Fail boleh dieksport secara individu daripada laluan fail atau dalam memori menggunakan kaedah export_file, atau semua fail daripada direktori boleh dieksport menggunakan kaedah export_directory.

Contoh

Eksport

Eksport daripada laluan fail ke laluan fail

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to export a file, writing the export archive to a new path
editor.export_file(
input_file=r"C:\gwpw\input\TestFile_11.doc",
output_file=r"C:\gwpw\output\editor\export_f2f\TestFile_11.doc.zip",
)

Eksport daripada laluan fail ke memori

export_file mengembalikan bait fail arkib yang dieksport. Contoh di bawah menunjukkan penetapan pemboleh ubah export_archive dan pemeriksaan kandungan pada bahagian awal arkib eksport Editor.

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to export a file
export_archive = editor.export_file(
input_file=r"C:\gwpw\input\TestFile_11.doc",
)

assert export_archive[:8] == b'PK\x03\x04\x14\x00\x0e\x00'

Eksport daripada memori

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Read file from disk to memory
with open(r"C:\gwpw\input\TestFile_11.doc", "rb") as f:
input_bytes = f.read()

# Use the default policy to export a file
export_archive = editor.export_file(
input_file=input_bytes,
)

assert export_archive[:8] == b'PK\x03\x04\x14\x00\x0e\x00'

Eksport fail dalam direktori

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to export a directory of files, writing the export archives to a new directory.
editor.export_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\export_directory"
)

Eksport fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong

Tingkah laku lalai bagi pembungkus Python Glasswall adalah untuk membangkitkan pengecualian yang berkaitan (lihat: glasswall.libraries.editor.errors) jika pemprosesan gagal. Memberikan raise_unsupported=False akan menghalang pengecualian daripada dibangkitkan dan boleh berguna apabila bekerja dengan direktori yang mengandungi campuran jenis fail yang disokong dan tidak disokong, apabila adalah diingini untuk memproses sebanyak mungkin fail dan bukannya menamatkan proses pada kegagalan pertama.

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to export a directory of files, writing the export archives to a new directory.
editor.export_directory(
input_directory=r"C:\gwpw\input_with_unsupported_file_types",
output_directory=r"C:\gwpw\output\editor\export_directory_unsupported",
raise_unsupported=False
)

Eksport fail dalam direktori menggunakan policy pengurusan kandungan tersuai

Menggunakan glasswall.content_management.policies.Editor:

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use a custom Editor policy to export all files in the input directory
# and write them to export_directory_custom directory. Write streams as
# ".xml" instead of the default interchange_type, ".sisl". Export embedded
# images as ".xml" instead of their default image file type.
editor.export_directory(
input_directory=r"C:\gwpw\input",
output_directory=r"C:\gwpw\output\editor\export_directory_custom",
content_management_policy=glasswall.content_management.policies.Editor(
default="sanitise",
config={
"sysConfig": {
"interchange_type": "xml",
"export_embedded_images": "true",
},
}
),
raise_unsupported=False
)

Eksport fail dalam direktori secara bersyarat berdasarkan format fail

Contoh di bawah menunjukkan pemprosesan hanya fail doc dan docx daripada direktori bersarang yang mengandungi pelbagai format fail.

import os

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

input_directory = r"C:\gwpw\input"
output_directory = r"C:\gwpw\output\editor\export_directory_file_format"

# Iterate relative file paths from input_directory
for relative_file in glasswall.utils.list_file_paths(input_directory, absolute=False):
# Construct absolute paths
input_file = os.path.join(input_directory, relative_file)
output_file = os.path.join(output_directory, relative_file + ".zip")

# Get the file type of the file
file_type = editor.determine_file_type(
input_file=input_file,
as_string=True,
raise_unsupported=False
)

# Export only doc and docx files
if file_type in ["doc", "docx"]:
editor.export_file(input_file, output_file)


Import

Arkib eksport boleh diimport secara individu daripada laluan fail atau dalam memori menggunakan kaedah import_file, atau semua arkib eksport daripada direktori boleh diimport menggunakan kaedah import_directory.

Import daripada laluan fail ke laluan fail

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to import an export archive, writing the imported file to a new path
editor.import_file(
input_file=r"C:\gwpw\output\editor\export_f2f\TestFile_11.doc.zip",
output_file=r"C:\gwpw\output\editor\import_f2f\TestFile_11.doc",
)

Import daripada laluan fail ke memori

import_file mengembalikan bait fail yang diimport. Contoh di bawah menunjukkan penetapan pemboleh ubah file_bytes dan pemeriksaan kandungan pada bahagian awal arkib eksport Editor.

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to import an export archive
file_bytes = editor.import_file(
input_file=r"C:\gwpw\output\editor\export_f2f\TestFile_11.doc.zip",
)

assert file_bytes[:8] == b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'

Import daripada memori

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Read file from disk to memory
with open(r"C:\gwpw\output\editor\export_f2f\TestFile_11.doc.zip", "rb") as f:
export_archive_bytes = f.read()

# Use the default policy to import an export archive
file_bytes = editor.import_file(
input_file=export_archive_bytes,
)

assert file_bytes[:8] == b'\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1'

Import fail dalam direktori

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to import a directory of export archives, writing the import archives to a new directory.
editor.import_directory(
input_directory=r"C:\gwpw\output\editor\export_directory",
output_directory=r"C:\gwpw\output\editor\import_directory"
)

Import fail dalam direktori yang mungkin mengandungi jenis fail yang tidak disokong

Tingkah laku lalai bagi pembungkus Python Glasswall adalah untuk membangkitkan pengecualian yang berkaitan (lihat: glasswall.libraries.editor.errors) jika pemprosesan gagal. Memberikan raise_unsupported=False akan menghalang pengecualian daripada dibangkitkan dan boleh berguna apabila bekerja dengan direktori yang mengandungi campuran jenis fail yang disokong dan tidak disokong, apabila adalah diingini untuk memproses sebanyak mungkin fail dan bukannya menamatkan proses pada kegagalan pertama.

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use the default policy to export a directory of export archives, writing the export archives to a new directory.
editor.import_directory(
input_directory=r"C:\gwpw\output\editor\export_directory_unsupported",
output_directory=r"C:\gwpw\output\editor\import_directory_unsupported",
raise_unsupported=False
)

Import fail dalam direktori menggunakan policy pengurusan kandungan tersuai

Menggunakan glasswall.content_management.policies.Editor:

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

# Use a custom Editor policy to import all files in the export directory
# and write them to import_directory_custom directory. Read streams as
# ".xml" instead of the default interchange_type, ".sisl".
editor.import_directory(
input_directory=r"C:\gwpw\output\editor\export_directory_custom",
output_directory=r"C:\gwpw\output\editor\import_directory_custom",
content_management_policy=glasswall.content_management.policies.Editor(
default="sanitise",
config={
"sysConfig": {
"interchange_type": "xml",
},
}
),
raise_unsupported=False
)

Import fail dalam direktori secara bersyarat berdasarkan format fail

Contoh di bawah menunjukkan pemprosesan hanya fail doc dan docx daripada direktori bersarang yang mengandungi pelbagai format fail.

import os

import glasswall


# Load the Glasswall Editor library
editor = glasswall.Editor(r"C:\gwpw\libraries\10.0")

input_directory = r"C:\gwpw\output\editor\export_directory_file_format"
output_directory = r"C:\gwpw\output\editor\import_directory_file_format"

# Iterate relative file paths from input_directory
for relative_file in glasswall.utils.list_file_paths(input_directory, absolute=False):
# Construct absolute paths
input_file = os.path.join(input_directory, relative_file)
output_file = os.path.join(output_directory, os.path.splitext(relative_file)[0])

# Get the file type of the file
file_type = editor.determine_file_type(
input_file=input_file,
as_string=True,
raise_unsupported=False
)

# Import only doc.zip and docx.zip files
if file_type == "zip" and input_file.endswith(("doc.zip", "docx.zip",)):
editor.import_file(input_file, output_file)


Eksport/Import & Analisis

Fungsi peringkat tinggi ini membolehkan anda menjalankan Export atau Import dan menjana laporan analisis dalam satu sesi. Untuk maklumat lanjut, lihat pautan dokumentasi di bawah.