ساخت فایل با استفاده از ctypes‌ در پایتون

برای ساخت فایل توی پایتون کار پیچیده‌ای لازم نیست انجام بدین اما وقتی میخواین از ctypes‌استفاده کنین یکم پیچیده تر میشه، برای ساخت فایل به تابع CreateFileA نیاز داریم که در زیر تمام پارامترهاشو توضیح دادم:

1
2
3
4
5
6
7
8
9
HANDLE WINAPI CreateFile(
  _In_     LPCTSTR               lpFileName,
  _In_     DWORD                 dwDesiredAccess,
  _In_     DWORD                 dwShareMode,
  _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes,
  _In_     DWORD                 dwCreationDisposition,
  _In_     DWORD                 dwFlagsAndAttributes,
  _In_opt_ HANDLE                hTemplateFile
);

خط دوم: lpFileName

این پارامتر اسم فایلیه که میخوایم بسازیم که به صورت یه استرینگ میدیمش به تابع

خط سوم: dwDesiredAccess

این پارامتر سطح دسترسیمونو مشخص میکنه، یعنی اینکه میخوایم بخونیمش، توش بنویسیم یا هرجفت یا هیچکدوم. این پارامتر رو با اطلاعات زیر باید پر کنیم:

GenericRead = 0x80000000 #خوندن
GenericWrite = 0x40000000 #نوشتن
GenericExecute = 0x20000000 #اجرا
GenericAll = 0x10000000 #همه

خط چهارم: dwShareMode

این پارامتر تعیین میکنه که فایلی که میسازیم قراره با چه گروهی به اشتراک گذاشته بشه، برای پر کردنش از اطلاعات زیر استفاده میکنیم:

0 #0x00000000 نمیذاره هیچکس دیگه‌ای بهش دسترسی داشته باشه
0x00000004 #فقط اجازه میده بقیه بتونن پاکش کنن، تغییر نام هم جزو دیلیت محسوب میشه
0x00000001 #اجازه میده که فایل توسط بقیه هم خونده بشه
0x00000002 #اجازه میده بقیه توش بنویسن

خط پنجم: lpSecurityAttributes

این پارامتر اختیاریه پس بجاش 0 میذاریم 😀

خط ششم: dwCreationDisposition

این پارامتر تعیین میکنه که چجوری با فایل برخورد کنه اگر بود، نبود، نصفه بود، نخواست باشه 😀 اطلاعاتشو از بخش زیر میتونید تکمیل کنید:

2 #یعنی همیشه فایل رو بساز، چه بود چه نبود! اگر همچین فایلی موجود باشه و اجازه نوشتن داشته باشه این پارامتر پاکش میکنه و دوباره از اول میسازش
 
1 #فقط در صورتی که فایل نباشه میسازش اگر باشه ارور (ERROR_FILE_EXISTS) رو میده
 
4 #همیشه بازش میکنه، اگر باشه بازش میکنه اگر نباشه میسازش
 
3 #فقط اگر فایل موجود باشه بازش میکنه
 
5 #اگر فایل موجود باشه بازش میکنه و حجمشو صفر میکنه اگر نباشه هم ارور میدهERROR_FILE_NOT_FOUND

خط هفتم: dwFlagsAndAttributes

برای این بخش معمولا باید بنویسید: 0x80 ولی اگر اطلاعات بیشتر میخواید از اینجا بخونید.

خط آخر هم اختیاریه پس میتونید بجاش صفر بذارید.

خوب حالا توی پایتون میخوایم با استفاده از ماژول Ctypes یه فایل بسازیم:

1
2
from ctypes import *
windll.Kernel32.CreateFileA('Zartosht.txt', 0x10000000, 0, 0, 4, 0x80, 0)
همین، به همین سادگی 🙂
نظری وجود ندارد. - نظر دهید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

*