পাইথনে উইন্ডোজ পাথ


152

উদাহরণস্বরূপ, উইন্ডোজ ডিরেক্টরি উপস্থাপনের সেরা উপায় কী "C:\meshes\as"? আমি একটি স্ক্রিপ্ট সংশোধন করার চেষ্টা করছি কিন্তু এটি কখনই কাজ করে না কারণ আমি ডিরেক্টরিটি সঠিকভাবে পেয়ে যাব বলে মনে হচ্ছে না, আমি ধরেছি '\'চরিত্রের চরিত্র হিসাবে অভিনয় করার কারণে ?

উত্তর:


220

আপনি সর্বদা ব্যবহার করতে পারেন:

'C:/mydir'

এটি লিনাক্স এবং উইন্ডো উভয় ক্ষেত্রেই কাজ করে। অন্যান্য সার্থকতা হ'ল

'C:\\mydir'

যদি আপনার কিছু নাম নিয়ে সমস্যা হয় তবে আপনি কাঁচা স্ট্রিং লিটারেলও চেষ্টা করে দেখতে পারেন:

r'C:\mydir'

তবে সর্বোত্তম অনুশীলন হ'ল os.pathমডিউল ফাংশনগুলি ব্যবহার করা যা আপনার ওএসের জন্য সর্বদা সঠিক কনফিগারেশন নির্বাচন করে:

os.path.join(mydir, myfile)

পাইথন ৩.৪ থেকে আপনি পাথলিব মডিউলটিও ব্যবহার করতে পারেন । এটি উপরোক্ত বিষয়গুলির সাথে সামঞ্জস্যপূর্ণ:

pathlib.Path(mydir, myfile)

অথবা

pathlib.Path(mydir) / myfile

2
@ গ্যারেথ, আমি খুব অলস এবং প্রায়শই নিজেকে '/' ব্যবহার করে দেখতে পেলাম। তবে দীর্ঘমেয়াদে os.path এর ব্যবহার আরও সুবিধাজনক। এটি আপনাকে মাইডির এবং মাইফাইলগুলি ভেরিয়েবল হিসাবে ব্যবহার করতে দেয় যা আপনি সহজেই সংশোধন করতে পারেন।
জোয়াকুইন

13
কাঁচা স্ট্রিংগুলিতে সতর্কতা অবলম্বন করার একমাত্র বিষয় তারা \ দিয়ে শেষ করতে পারে না
ডগলাস লিডার

আপনি। দিয়ে পাথ শেষ করার প্রয়োজনটি সরাতে os.path.join () ব্যবহার করতে পারেন \
উইল এডিগার

1
আমি আর (কাঁচা স্ট্রিং) সিনট্যাক্স পছন্দ করি। আপনি যদি দীর্ঘ পথ অনুলিপি করেন তবে দরকারী যেখানে আপনি সাধারণত সমস্ত ব্যাকস্ল্যাশগুলি ফরোয়ার্ড স্ল্যাশগুলির সাথে প্রতিস্থাপন করতে হবে
পেটারব

কাঁচা স্ট্রিং end দিয়ে শেষ হতে পারে তাই আমরা কোনও ফাইলটিকে পথের সাথে সংযুক্ত করতে পারি: codecs.open (r "C: \ maXbox \ EKON24 \ tweet_data \\" + file, 'r', encoding = 'utf-8') হিসাবে চ:
সর্বাধিক ক্লিনার

20

os.pathমডিউলটি ব্যবহার করুন ।

os.path.join( "C:", "meshes", "as" )

অথবা কাঁচা স্ট্রিং ব্যবহার করুন

r"C:\meshes\as"

আমি পথ বা ফাইলের নামগুলির কোনও স্থান ফাঁকা করার সুপারিশ করব। এবং আপনি আপনার স্ট্রিংগুলিতে ডাবল ব্যাকস্ল্যাশ ব্যবহার করতে পারেন।

"C:\\meshes\\as.jpg"

11
os.path.join কোনও উপাদান ড্রাইভ লেটার হওয়ার সময় আপনার প্রত্যাশা মতো আচরণ করতে পারে না, যেহেতু তখনও আপেক্ষিক পাথ অনুমোদিত হয়। (প্রথম লাইনের ফলাফল উইন্ডোজে 'সি: মেসেস \\ হিসাবে' রয়েছে))
ড্যাশ-টম-ব্যাং

@ ড্যাশ-টম-ব্যাং এর মন্তব্যটি সত্যই গুরুত্বপূর্ণ। "C:\"প্রথম এন্ট্রি হিসাবে সঠিক জিনিসটি করা কি ? এটি ব্যবহারের পরিষ্কার-পরিচ্ছন্নতার কিছুতেই বিশৃঙ্খলা সৃষ্টি করে join?
জ্যাক ও'কনোর

1
@ জ্যাকও'কনর আমি এটিই করি। আপনি অবশ্যই "C:\"ফাইল নামের মাঝখানে রাখতে চান না । এছাড়াও, আপনি os.path.normpathযোগদানের আগে বা পরে ব্যবহার করতে পারেন , যাতে পথটি সুন্দরভাবে মুদ্রিত হয় তা নিশ্চিত করতে।
অ্যাগোস্টিনো

কিন্তু এটি কাজ করে না। কী কাজ করেos.path.join( "C:\\", "meshes", "as" )
জ্যান-ফ্রান্সোইস ফ্যাব্রে

17

হ্যাঁ, \পাইথন স্ট্রিংয়ে আক্ষরিক অর্থে পালানো ক্রমের সূচনা করে। আপনার পথে আপনার একটি বৈধ দ্বি-চরিত্রের পালানোর ক্রম রয়েছে \a, যা একটি অক্ষরে পড়ে যা ASCII বেল :

>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess

অন্যান্য সাধারণ পালানোর ক্রমগুলির মধ্যে রয়েছে \t(ট্যাব), \n(লাইন ফিড), \r(ক্যারেজ রিটার্ন):

>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']

যেমন আপনি দেখতে পাচ্ছেন, এই সমস্ত উদাহরণে ব্যাকস্ল্যাশ এবং আক্ষরিক পরবর্তী অক্ষরকে একত্রিত করে চূড়ান্ত স্ট্রিংয়ের একটি একক অক্ষর তৈরি করা হয়েছিল। পাইথনের পালানোর ক্রমগুলির সম্পূর্ণ তালিকা এখানে

এটি মোকাবেলার বিভিন্ন উপায় রয়েছে:

  1. পাইথন প্রিফিক্স স্ট্রিং লিটারেল মধ্যে পালাবার ক্রম প্রক্রিয়া করব না rবাR :

    >>> r'C:\meshes\as'
    'C:\\meshes\\as'
    >>> print(r'C:\meshes\as')
    C:\meshes\as
  2. উইন্ডোজের পাইথনকেও ফরোয়ার্ড স্ল্যাশগুলি পরিচালনা করা উচিত।

  3. আপনি ব্যবহার করতে পারেন os.path.join...

    >>> import os
    >>> os.path.join('C:', os.sep, 'meshes', 'as')
    'C:\\meshes\\as'
  4. ... বা আরও নতুন pathlibমডিউল

    >>> from pathlib import Path
    >>> Path('C:', '/', 'meshes', 'as')
    WindowsPath('C:/meshes/as')

-1

পাওয়ারশেল ব্যবহার করুন

উইন্ডোজে আপনি যতক্ষণ পাওয়ার কমান্ড-লাইন ইন্টারফেস হিসাবে পাওয়ারশেল ব্যবহার করেন ততক্ষণ/ আপনি আপনার পথে লিনাক্স বা ম্যাকোসের মতো সমস্ত জায়গায় ব্যবহার করতে পারেন । এটি উইন্ডোজে প্রাক ইনস্টলড আসে এবং এটি কমান্ডের মতো অনেক লিনাক্স কমান্ড সমর্থন করে ls

আপনি যদি উইন্ডোজ কমান্ড প্রম্পট ( cmdউইন্ডোজ স্টার্ট মেনু টাইপ করার সময় প্রদর্শিত হয় ) ব্যবহার করেন তবে আপনাকে \কেবল তার ভিতরে পাথ নির্দিষ্ট করতে হবে। আপনি /অন্য সমস্ত স্থানে পাথ ব্যবহার করতে পারেন (কোড সম্পাদক, পাইথন ইন্টারেক্টিভ মোড ইত্যাদি)।


-1

আপনি যদি অন্য উত্স থেকে উইন্ডোজ পাথ আটকাতে চান (তবে ফাইল এক্সপ্লোরার) - input()পাইথন কনসোলে কল করার মাধ্যমে আপনি এটি করতে পারেন :

>>> input()
D:\EP\stuff\1111\this_is_a_long_path\you_dont_want\to_type\or_edit_by_hand
'D:\\EP\\stuff\\1111\\this_is_a_long_path\\you_dont_want\\to_type\\or_edit_by_hand'

তারপরে কেবল ফলাফলটি অনুলিপি করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.