पायथन में, os.path.splitext
क्यों '।' का उपयोग कर रहा है os.extsep
के बजाय विस्तार विभाजक के रूप में?पायथन स्प्लिटेक्स्ट
12
A
उत्तर
5
os.extsep
os.path.extsep
आयात करके परिभाषित किया गया है। लेकिन तुम सही हो, os.path.splitext()
हमेशा .
का उपयोग करता है, os.path.extsep
की परवाह किए बिना:
os.py
से
(3.2.2):
from os.path import (curdir, pardir, sep, pathsep, defpath, extsep, altsep,
devnull)
ntpath.py
से
(जो os.path
हो जाता है)
extsep = '.'
[...]
def _get_dot(path):
if isinstance(path, bytes):
return b'.'
else:
return '.' # instead of return extsep! [Comment by me, not in source]
[...]
def splitext(p):
return genericpath._splitext(p, _get_sep(p), _get_altsep(p),
_get_dot(p))
इसके अलावा, genericpath.py
से:
def _get_dot(path):
if isinstance(path, bytes):
return b'.'
else:
return '.'
तो os.path()
वास्तव में विस्तार विभाजक को दो बार परिभाषित करता है।
अब यह कोई फर्क नहीं पड़ता क्योंकि यह जल्द ही कभी भी नहीं बदला जा रहा है (यह वैसे भी सभी समर्थित प्लेटफ़ॉर्म पर समान है)। लेकिन एक तरह से, यह डीआरवाई सिद्धांत का उल्लंघन करता है।
न तो उत्तर ने इस अच्छे प्रश्न को संबोधित किया है। क्या 'os.path.splitext' वास्तव में '' '' का उपयोग करता है, या यह 'os.path.extsep' का उपयोग करता है? दस्तावेज़ कहते हैं ''। '। –
@ टॉम: आप यहां 'splitext' की परिभाषा पढ़ सकते हैं: http://hg.python.org/cpython/file/d3e072083ff3/Lib/posixpath.py#l108, कम से कम पायथन 3.3 के लिए लेकिन यह नहीं बदला बहुत। – mouad
@mouad - धन्यवाद, पहले कभी स्रोतों को देखने का अवसर नहीं था। इसलिए, यह 'os.path.extsep' के बजाय हार्डकोडेड' '' 'का उपयोग करता है। ऐसा लगता है कि उन बगों में से एक जो ज्यादातर लोगों द्वारा नहीं छोड़ा जाएगा। –