Tôi nghĩ rằng tôi không thể nhìn thấy bức tranh lớn hơn ở đây; nhưng về cơ bản tôi không biết tại sao bạn lại sử dụng os.path.join
thay vì chỉ nối chuỗi bình thường?
Tôi chủ yếu sử dụng VBScript nên tôi không hiểu điểm của chức năng này.
Tôi nghĩ rằng tôi không thể nhìn thấy bức tranh lớn hơn ở đây; nhưng về cơ bản tôi không biết tại sao bạn lại sử dụng os.path.join
thay vì chỉ nối chuỗi bình thường?
Tôi chủ yếu sử dụng VBScript nên tôi không hiểu điểm của chức năng này.
Câu trả lời:
Viết các thao tác trên đường dẫn tệp một lần và nó hoạt động miễn phí trên nhiều nền tảng khác nhau. Ký tự phân định được trừu tượng hóa đi, giúp công việc của bạn dễ dàng hơn.
Bạn không cần phải lo lắng về việc đường dẫn thư mục đó có dấu gạch chéo hay không . os.path.join
sẽ thêm nó nếu nó cần.
Việc sử dụng os.path.join
giúp người khác đọc mã của bạn thấy rõ rằng bạn đang làm việc với các đường dẫn tệp. Mọi người có thể nhanh chóng quét qua mã và phát hiện ra bản chất đó là một đường dẫn tệp. Nếu bạn quyết định tự xây dựng nó, bạn có thể sẽ ngăn cản người đọc tìm ra các vấn đề thực tế với mã của bạn: "Hmm, một số kết nối chuỗi, một sự thay thế. Đây là một đường dẫn tệp hay sao? Gah! Tại sao anh ta không sử dụng os.path.join
?" :)
os.path.join
, nhưng nếu bạn có, hãy làm điều đó vì những lý do chính đáng. Có rất nhiều hàng hóa xung quanh os.path.join. "Một sự kiên định ngu ngốc là hobgoblin của những bộ óc nhỏ bé," như họ nói.
Sẽ hoạt động trên Windows với '\' và Unix (bao gồm cả Mac OS X) với '/'.
cho posixpath đây là mã đơn giản
In [22]: os.path.join??
Type: function
String Form:<function join at 0x107c28ed8>
File: /usr/local/Cellar/python/2.7.3/Frameworks/Python.framework/Versions/2.7/lib/python2.7/posixpath.py
Definition: os.path.join(a, *p)
Source:
def join(a, *p):
"""Join two or more pathname components, inserting '/' as needed.
If any component is an absolute path, all previous path components
will be discarded."""
path = a
for b in p:
if b.startswith('/'):
path = b
elif path == '' or path.endswith('/'):
path += b
else:
path += '/' + b
return path
không có cửa sổ nhưng cùng một cửa sổ sẽ ở đó với '\'
/
công trình trên Windows, với CPython ...
Nó độc lập với hệ điều hành. Nếu bạn mã hóa các đường dẫn của mình dưới dạng C: \ Dù chúng sẽ chỉ hoạt động trên Windows. Nếu bạn mã hóa chúng với tiêu chuẩn Unix "/", chúng sẽ chỉ hoạt động trên Unix. os.path.join phát hiện hệ điều hành mà nó đang chạy và tham gia các đường dẫn bằng cách sử dụng đúng ký hiệu.
If you hardcode them with the Unix standard "/" they will only work on Unix.
Đó là sai lầm. "/" hoạt động tốt trên windows VÀ linux / unix / bsd / darwin.