كيف يمكنني معرفة برنامج نصي Python (Cygwin) للعمل في الدلائل الحالية (أو النسبية)؟

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

سؤال

لدي الكثير من الدلائل مع الملفات النصية المكتوبة باستخدام (G) VIM، وقد كتبت حفنة من الأدوات المساعدة التي أجدها مفيدة في بيثون. أبدأ خارج المرافق باستخدام خط Pyr / Bink-Bang- / usr / Bin / En Enc من أجل استخدام Python المثبت تحت Cygwin. أود كتابة الأوامر مثل هذا:

٪ CD ~ / نص

٪ التي pythonutil.

/ USR / محلي / بن / بيثونوتيل

٪ pythonutil ./infile.txt ./outfile.txt

(أو٪ pythonutil somerelpath / infile.txt syposslydifferentrelpath / outfile.txt)

pythonutil: وجدت infile.txt؛ كتابة outfile.txt؛ القيام به (أو بعض هذه، إذا كان أي شيء)

ومع ذلك، فإن برامج Pythonutil الخاصة بي تبقي لي أنهم لا يستطيعون العثور على infile.txt. إذا قمت بنسخ الأداة المساعدة في دليل العمل الحالي، فكل شيء على ما يرام، ولكن بعد ذلك، لدي نسخ من الأدوات المساعدة الخاصة بي باستثناء المشهد. ماذا يجب أن أفعل؟

تعديل آخر: لتلخيص --- ما أردت أن Os.path.abspath ('اسم الملف'). يؤدي ذلك إلى إرجاع اسم المسار المطلق كسلسلة، ثم تمت إزالة جميع الغموض.

ولكن: إذا كانت بيثون المستخدمة هي التي تم تثبيتها تحت Cygwin، فسيكون اسم المسار المطلق مسارا Cygwin- نسبي، مثل /home/someuser/somedir/somefile.txt. ومع ذلك، إذا تم تثبيت Python ضمن Windows (وهو هنا يتم استدعاؤه من Circandline المحطة الطرفية Cygwin)، فسيكون اسم المسار المطلق مسار Windows الكامل، من "محرك الأقراص" إلى أسفل، مثل D: Cygwin Home SomeUser somedir somefile.txt.

الأخلاقي: لا تتوقع أن يقوم Pygwin Python بإنشاء مسار مطلق Windows-Complete لملف غير متجذر في /؛ إنه خارج أفق الحدث الخاص به. ومع ذلك، يمكنك الوصول إلى أي ملف على نظام WinXP مع Cygwin-Python إذا حددت مسار الملف باستخدام Leadin Leadin Leadin "/ cygdrive / driveletter".

ملاحظة: لا تستخدم "" بالنسبة للفواصل في مسار WinXP على Cygwin Commandline؛ استخدم "/" وثقة الأفعى. لا فكرة عن السبب، ولكن قد يتم إسقاط بعض الفواصل ويمكن تعديل المسار لتضمين مستويات إضافية، مثل "المستندات والإعدادات Siteuser" وغيرها من نوافذ نوافذ.

بفضل المستجيبين لإيصالني في الاتجاه الصحيح.

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

المحلول

إلقاء نظرة على OS.GetCWD:

تحرير: بالنسبة للمسارات النسبية، يرجى إلقاء نظرة على وحدة OS.Path:

على وجه الخصوص، OS.Path.join و Os.Path.normPath. على سبيل المثال:

import os
print os.path.normpath(os.path.join(os.getcwd(), '../AnotherBook/Chap2.txt'))

نصائح أخرى

ماذا يحدث عند كتابة "LS"؟ هل ترى "infile.txt" مدرجة هناك؟

os.chdir(my_dir)

أو

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