فرمت فایل را شناسایی کنید و سازگاری فرمت را بررسی کنید
گاهی اوقات لازم است قبل از باز کردن یک سند، فرمت آن مشخص شود، زیرا پسوند فایل تضمین نمی کند که محتوای فایل مناسب است. به عنوان مثال، مشخص است که Crystal Reports اغلب اسناد را با فرمت RTF خروجی می دهد، اما پسوند .doc را به آنها می دهد.
Aspose.Words امکان به دست آوردن اطلاعات در مورد نوع فایل را فراهم می کند تا اگر مطمئن نیستید محتوای واقعی فایل چیست، از یک استثنا جلوگیری می کند.
تشخیص فرمت فایل بدون استثنا
هنگامی که با چندین سند در قالبهای فایل مختلف سروکار دارید، ممکن است لازم باشد آن فایلهایی را که میتوانند توسط Aspose.Words پردازش شوند از فایلهایی که نمیتوانند پردازش کنند، جدا کنید. همچنین ممکن است بخواهید بدانید چرا برخی از اسناد قابل پردازش نیستند.
اگر بخواهید فایلی را در یک شیء Document بارگیری کنید و Aspose.Words نتواند فرمت فایل را تشخیص دهد یا فرمت آن پشتیبانی نشود، Aspose.Words یک استثنا ایجاد می کند. شما می توانید آن استثناها را بگیرید و آنها را تجزیه و تحلیل کنید، اما Aspose.Words همچنین روش detect_file_format را ارائه می دهد که به ما امکان می دهد فرمت فایل را بدون بارگیری سند با استثناهای احتمالی به سرعت تعیین کنیم. این روش یک شی FileFormatInfo را برمی گرداند که حاوی اطلاعات شناسایی شده در مورد نوع فایل است.
سازگاری فرمت فایل ها را بررسی کنید
میتوانیم سازگاری فرمت همه فایلهای موجود در پوشه انتخابی را بررسی کرده و آنها را بر اساس فرمت در زیر پوشههای مربوطه مرتب کنیم.
از آنجایی که ما با محتوای یک پوشه سروکار داریم، اولین کاری که باید انجام دهیم این است که با استفاده از روش listdir ماژول سیستم عامل مجموعه ای از تمام فایل های این پوشه را دریافت کنیم.
مثال کد زیر نحوه دریافت لیستی از تمام فایل های موجود در پوشه را نشان می دهد:
# 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)) | |
فایل ها با استفاده از روش فایل را کپی کن ماژول shutil به زیر پوشه های مناسب منتقل می شوند.
در مثال بالا از فایل های زیر استفاده شده است. نام فایل در سمت چپ و توضیحات آن در سمت راست:
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 | Office Open XML WordprocessingML سند بدون ماکرو. | |
فایل تست (Docm).docm | Office سند XML WordprocessingML را با ماکروها باز کنید. | |
فایل تست (Dotx).dotx | قالب Office Open XML WordprocessingML. | |
فایل تست (Dotm).dotm | Office Open XML WordprocessingML قالب با ماکرو. | |
فایل تست (XML).xml | سند FlatOPC OOXML. | |
فایل تست (RTF).rtf | سند با فرمت متن غنی | |
فایل تست (WordML).xml | سند WordprocessingML Microsoft Word 2003. | |
فایل تست (HTML).html | سند HTML | |
فایل تست (MHTML).mhtml | سند MHTML (بایگانی وب). | |
فایل تست (Odt).odt | متن OpenDocument (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 WordprocessingML. | |
فرمت های فایل پشتیبانی نشده | فایل تست (JPG).jpg | فایل تصویری JPEG |