اذهب إلى المحتوى

السؤال

نشر

أريد أن أحصل على المسار الكامل لسكريبت بايثون الحالي، لنفترض أني قمت بتشغيل ملف بايثون من خلال سطر الأوامر من مجلد مختلف عن الذي يحتوي على ملف بايثون كالتالي على سبيل المثال:

C:\Users\fahmy> python D:\dir\pythonScript.py

لاحظ أن مجلد العمل الحالي Current Working Directory في سطر الأوامر هو C:\Users\fahmy بينما مسار ملف بايثون هو D:\dir\pythonScript.py ما أريده هو الحصول على مسار ملف بايثون الأخير هذا برمجيًا، كيف يمكنني أن أقوم بذلك بغض النظر عن مكان وجوده؟

Recommended Posts

  • 1
نشر

السلام عليكم @Fahmy Mostafa

حسب ما فهمت , إنك تريد طريقة لكيفية تشغيل السكربت الخاص بك من خلال ال terminal بغض النظر عن مكان وجوده ,إن كان كذلك الطريقة سهلة , أنشأ مجلد سيحتوي على سكربتات البايثون  التي تريد ان تشغلها من اي مكان , فليكن الإسم myscript في المسار C:\Users\fahmy بعد ذلك ما سنقوم به هو إضافته كمسار عام من خلال الذهاب إلى جهاز الكمبيوتر ثم "Properties" ثم "Advanced system settings" ثم "Advanced" بعدها "Environment Variables" ثم قم بإختيار "Path" بعدها إضغط على زر "Edit" من النافذة التي ظهرت إضغط على زر "New" من الجزر الأيمن ثم نقوم بإضافة المسار الكامل إلى المجلد الذي قمنا بعمله مسبقاً أي هكذا 

C:\Users\fahmy\myscript بعدها إضغط تطبيق او موافق ثم أغلق اي واجهة اوامر او terminal كانت مفتوحة واعد تشغيل واجهة الأوامر مرة أخرى وجرب تشغيل السكربت الخاص بك من خلال الأمر مع اسم السكربت مثال test.py وسيعمل السكربت بدون مشاكل من اي مكان :)  ,أما إن كان تريد معرفة مسار وجود ملف معين يمكنك إستخدام الأمر dir مع جزء او اسم الملف كاملاً هكذا وسيظهر لك الملف ومساره على جهاز الكمبيوتر 

dir script.py /s /p

  • 0
نشر

يمكنك ذلك عن طريق تنفيذ البرنامج التالي:

import os
print os.path.abspath(__file__)

أو الأسطر البرمجية التالية والتي تعمل على MAC:

import os

file_path = os.path.realpath(__file__)

كما يمكنك أيضاً إستخدام مكتبات sys, os:

import sys, os

print('sys.argv[0] =', sys.argv[0])             
pathname = os.path.dirname(sys.argv[0])        
print('path =', pathname)
print('full path =', os.path.abspath(pathname)) 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...