Видалити формат файлів і перевірити формат сумісності
Іноді необхідно визначити формат документа перед відкриттям, оскільки розширення файлу не гарантує, що вміст файлу доречно. Наприклад, відомо, що кристалічні звіти часто виводяться документи у форматі RTF, але дають їм розширення .doc.
Aspose.Words дає можливість отримати інформацію про тип файлу, щоб уникнути виключення, якщо ви не впевнені, що фактичний зміст файлу є.
Видалити формат файлів без виключення
Коли ви працюєте з декількома документами в різних форматах файлів, вам може знадобитися відокремити ці файли, які можуть бути оброблені Aspose.Words від тих, хто не може. Ви також можете дізнатися, чому деякі документи не можуть бути оброблені.
Якщо ви спробуєте завантажити файл в файл Document об’єкт і Aspose.Words не може розпізнати формат файлу або формат не підтримується, Aspose.Words викине виняток. Ви можете зловити ті винятки і проаналізувати їх, але Aspose.Words також надає detect_file_format метод, який дозволяє нам швидко визначити формат файлів без завантаження документа з можливими винятками. Цей метод повертає FileFormatInfo об’єкт, який містить інформацію про тип файлу.
Перевірити формат файлів сумісність
Ми можемо перевірити формат сумісності всіх файлів у вибраній папці та сортувати їх за форматом у відповідні підпапки.
З тих пір, як ми працюємо з вмістом в папці, перше, що нам потрібно зробити, це зібрати всі файли в цій папці за допомогою папки Список метод методу з модуль.
Приклад наступного коду показує, як отримати список всіх файлів в папці:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
fileList = (file for file in os.listdir(docs_base.my_dir) | |
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx"))) | |
Коли зібрані всі файли, решта роботи виконується detect_file_format метод, який перевіряє формат файлу.
Наприклад, наступний код показує, як ітерувати над зібраним переліком файлів, перевірити формат кожного файлу та переміщати кожен файл у відповідну папку:
# For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Python-via-.NET | |
supported_dir = docs_base.artifacts_dir + "Supported" | |
unknown_dir = docs_base.artifacts_dir + "Unknown" | |
encrypted_dir = docs_base.artifacts_dir + "Encrypted" | |
pre97_dir = docs_base.artifacts_dir + "Pre97" | |
# Create the directories if they do not already exist. | |
if not os.path.exists(supported_dir): | |
os.makedirs(supported_dir) | |
if not os.path.exists(unknown_dir): | |
os.makedirs(unknown_dir) | |
if not os.path.exists(encrypted_dir): | |
os.makedirs(encrypted_dir) | |
if not os.path.exists(pre97_dir): | |
os.makedirs(pre97_dir) | |
fileList = (file for file in os.listdir(docs_base.my_dir) | |
if (os.path.isfile(os.path.join(docs_base.my_dir, file)) and not file.endswith("Corrupted document.docx"))) | |
for fileName in fileList: | |
name_only = fileName | |
fileName = os.path.join(docs_base.my_dir, name_only) | |
print(name_only) | |
info = aw.FileFormatUtil.detect_file_format(fileName) | |
lf = info.load_format | |
# Display the document type | |
if lf == aw.LoadFormat.DOC: | |
print("\tMicrosoft Word 97-2003 document.") | |
elif lf == aw.LoadFormat.DOT: | |
print("\tMicrosoft Word 97-2003 template.") | |
elif lf == aw.LoadFormat.DOCX: | |
print("\tOffice Open XML WordprocessingML Macro-Free Document.") | |
elif lf == aw.LoadFormat.DOCM: | |
print("\tOffice Open XML WordprocessingML Macro-Enabled Document.") | |
elif lf == aw.LoadFormat.DOTX: | |
print("\tOffice Open XML WordprocessingML Macro-Free Template.") | |
elif lf == aw.LoadFormat.DOTM: | |
print("\tOffice Open XML WordprocessingML Macro-Enabled Template.") | |
elif lf == aw.LoadFormat.FLAT_OPC: | |
print("\tFlat OPC document.") | |
elif lf == aw.LoadFormat.RTF: | |
print("\tRTF format.") | |
elif lf == aw.LoadFormat.WORD_ML: | |
print("\tMicrosoft Word 2003 WordprocessingML format.") | |
elif lf == aw.LoadFormat.HTML: | |
print("\tHTML format.") | |
elif lf == aw.LoadFormat.MHTML: | |
print("\tMHTML (Web archive) format.") | |
elif lf == aw.LoadFormat.ODT: | |
print("\tOpenDocument Text.") | |
elif lf == aw.LoadFormat.OTT: | |
print("\tOpenDocument Text Template.") | |
elif lf == aw.LoadFormat.DOC_PRE_WORD60: | |
print("\tMS Word 6 or Word 95 format.") | |
elif lf == aw.LoadFormat.UNKNOWN: | |
print("\tUnknown format.") | |
if info.is_encrypted: | |
print("\tAn encrypted document.") | |
shutil.copyfile(fileName, os.path.join(encrypted_dir, name_only)) | |
else: | |
if lf == aw.LoadFormat.DOC_PRE_WORD60: | |
shutil.copyfile(fileName, os.path.join(pre97_dir, name_only)) | |
elif lf == aw.LoadFormat.UNKNOWN: | |
shutil.copyfile(fileName, os.path.join(unknown_dir, name_only)) | |
else: | |
shutil.copyfile(fileName, os.path.join(supported_dir, name_only)) | |
Файли переміщуються в відповідні підпапки з використанням Файли метод методу Зареєструватися модуль.
На прикладі вище використовуються наступні файли. Назва файлу зліва і його опис справа:
Group Файли | Вхідний документ | Тип |
---|---|---|
Підтримка форматів файлів | Тест файл (Doc).doc | Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 документ. |
Тестувати файлDot .dot |
Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 шаблон. | |
Тест файл (Docx).docx | Офіс Відкритий XML-розробка ML документ без макросів. | |
Файл тесту (Docm).docm | Офіс Відкритий XML-розробка ML документ з макросом. | |
Тест файл (Dotx).dotx | Офіс Відкритий XML-розробка ML шаблон. | |
Тест файл (Dotm).dotm | Офіс Відкритий XML-розробка ML шаблон з макросом. | |
English, Українська, Français. | FlatOPC OOXML Документ. | |
Тест файл (RTF).rtf | Багатий текст Формат документа. | |
English, Українська, Français. | Microsoft Word 2003 Словообробка ML документ. | |
English, Українська, Français. | HTML документ. | |
JavaScript licenses API Веб-сайт Go1.13.8 | MHTML (Web архів) документ. | |
Тест файл (Odt).odt | OpenDocument Text (OpenOffice Writer). | |
Тест файл (Ott).ott | Шаблон документа OpenDocument. | |
Тест файл (DocPreWord60).doc | Microsoft Word 2.0 документ. | |
Зашифровані документи | Файл тесту (Enc).doc | Зашифрований Microsoft Word 95/6.0 або Microsoft Word 97 – 2003 документ. |
Тест файл (Enc).docx | Зашифрована Office Open XML Wordprocessing ML документ. | |
Не підтримується формати файлів | Файл тесту (JPG). й | Файл зображень JPEG. |