كيف يمكنني استخدام '~' (tilde) في سياق المسارات؟

StackOverflow https://stackoverflow.com/questions/3488603

  •  28-09-2019
  •  | 
  •  

سؤال

أنا NOOB تطوير تطبيقات الويب. لدي وظيفة تفتح ملف وقراءته. لسوء الحظ ، تختلف هياكل الدليل بين خوادم الاختبار والإنتاج. قيل لي أن "استخدام مسار بالنسبة إلى ~". لم أتمكن من العثور على أي موارد على "~" ، رغم ذلك!

كيف يمكنني استخدام شخصية Tilde في سياق المسارات؟

تحرير: هذا في بيثون. لقد أصلحت المشكلة ، باستخدام os.path.expanduser ('~/path/in/home/arey').

هل كانت مفيدة؟

المحلول

إنه الخاص بك $HOME var في UNIX ، وهو عادة ما يكون /home/username.

"منزلك" بمعنى منزل المستخدم الذي ينفذ أمر مثل cd ~/MyDocuments/ هو cd /home/user_executing_cd_commnd/MyDocuments

نصائح أخرى

ما لم تكن تكتب برنامج نصي shell أو تستخدم لغة أخرى تعرف أن تحل محل قيمة $HOME إلى عن على ~, ، Tildes في مسارات الملفات ليس لها معنى خاص وسيتم التعامل معها كأي حرف آخر غير خاص.

إذا كنت تكتب نص Shell ، فإن القذائف لا تفسر Tildes إلا إذا كانت تحدث كحرف أول في حجة. بعبارات أخرى، ~/file سيصبح /path/to/users/home/directory/file, ، لكن ./~/file سيتم تفسيرها حرفيًا (أي ، ملف يسمى file في دليل فرعي . اتصل ~").

يستخدم في عناوين URL ، وتفسير Tilde كاختزال للدليل الرئيسي للمستخدم (على سبيل المثال ، http://www.foo.org/~bob) هي اتفاقية مستعارة من يونيكس. يعد التنفيذ خاصًا تمامًا بالخادم ، لذلك ستحتاج إلى التحقق من الوثائق لخادم الويب الخاص بك لمعرفة ما إذا كان له أي معنى خاص.

إذا كنت تستخدم Pathlib لأسماء الملفات ، فيمكنك استخدامها على كل من Windows و Linux (جئت إلى هنا للحصول على إجابة Windows):

python from pathlib import Path p = Path('~').expanduser() print(p)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top