Muthanna Alqaisi نشر 21 يناير أرسل تقرير نشر 21 يناير from pathlib import Path from datetime import datetime file_name = Path.home() / Path('Desktop', 'Folder') file_name.mkdir(exist_ok=True) for name in range(20): times = datetime.now().strftime("%Y%m%d%H%M%S%f") (file_name / f'File{times}_{name}.json').touch(exist_ok=True) (file_name / f'Folder{times}_{name}').mkdir(exist_ok=True) 1 اقتباس
0 ياسر مسكين نشر 21 يناير أرسل تقرير نشر 21 يناير وعليكم السلام ورحمة الله وبركاته، الكود صحيح وسينفذ المطلوب منه بحيث يقوم بإنشاء مجلد باسم "Folder" على سطح المكتب ثم ينشئ داخله 20 ملف JSON و20 مجلد فرعي، أرجو منك في حال كان هذا السؤال متعلقا بإحدى الدروس في أحد الدورات التي قمت بالاشتراك فيها أن تقوم بطرح سؤالك في المرة القادمة في أسفل الدرس وهذا لمساعدتك بالشكل المناسب فهنا نقوم بالإجابة فقط على الأسئلة الغير متعلقة بمحتوى الدورة. 1 اقتباس
0 Mustafa Suleiman نشر 26 يناير أرسل تقرير نشر 26 يناير لا مشكلة بالكود، وللعلم بالشيء مكتبة pathlib تعتبر حديثة وقديمًا كنا نستخدم os.path لكن حاليًا pathlib هي أحدث وأسهل في التعامل مع المسارات وتعمل على جميع الأنظمة Windows/Mac/Linux. كتحسين، المتغير file_name بمجلد وليس ملف لذا الاسم غير صحيح، حيث يجب استخدام أسماء تعبر عن المحتوى، مثل base_dir أو target_folder أو folder_path لتسهيل قراءة الكود واستيعاب المنطق. وبدلاً من كتابة Path.home() / Path('Desktop', 'Folder') الأفضل دمج النصوص مباشرة دون تحويل الجزء الثاني إلى Path: folder_path = Path.home() / 'Desktop' / 'Folder' كذلك إضافة parents=True، لتصبح mkdir(parents=True, exist_ok=True) وذلك على إفتراض أن مجلد Desktop غير موجود وهو أمر غير وارد بالطبع لكن على إفتراض المجلد هو مجلد آخر، أو أنك أردت إنشاء Folder/test مباشرًة، فمعلمة parents=True ستقوم بإنشاء كل المجلدات المفقودة في المسار وتجنب توقف الكود. اقتباس
0 عبدالباسط ابراهيم نشر 16 فبراير أرسل تقرير نشر 16 فبراير رغم أن الكود يعمل بشكل مثالي، إلا أن هناك بعض التعديلات البسيطة التي تجعله أكثر احترافية وقابلية للقراءة مثل تسمية المتغيرات بما تدل عليه أي المتغير file_name يستخدم هنا لتمثيل مسار مجلد لذا من الأفضل تسميته folder_path أو dir_name وعند استخدام pathlib، ليس من الضروري استخدام Path مرة أخرى داخل عملية الدمج. يمكنك دمج السلاسل النصية (Strings) مباشرة باستخدام علامة /. وأيضاً بالرغم أن الكود مثال بسيط ولكن يتم استدعاء datetime.now() في كل دورة داخل الحلقة (Loop). إذا كنت تنشئ ألاف الملفات، فهذا سيستهلك موارد المعالج.فيمكنك أخذ الطابع الزمني مرة واحدة قبل الحلقة، والاعتماد على المتغير name لتمييز الملفات عن بعضها. اقتباس
السؤال
Muthanna Alqaisi
from pathlib import Path
from datetime import datetime
file_name = Path.home() / Path('Desktop', 'Folder')
file_name.mkdir(exist_ok=True)
for name in range(20):
times = datetime.now().strftime("%Y%m%d%H%M%S%f")
(file_name / f'File{times}_{name}.json').touch(exist_ok=True)
(file_name / f'Folder{times}_{name}').mkdir(exist_ok=True)
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.