Câu trả lời:
bạn có thể sử dụng luôn:
'C:/mydir'
cái này hoạt động cả trong linux và windows. Khả năng khác là
'C:\\mydir'
nếu bạn gặp vấn đề với một số tên, bạn cũng có thể thử chuỗi ký tự thô:
r'C:\mydir'
tuy nhiên cách tốt nhất là sử dụng các os.path
chức năng mô-đun luôn chọn cấu hình đúng cho hệ điều hành của bạn:
os.path.join(mydir, myfile)
Từ python 3,4, bạn cũng có thể sử dụng mô-đun pathlib . Điều này tương tự như trên:
pathlib.Path(mydir, myfile)
hoặc là
pathlib.Path(mydir) / myfile
Sử dụng os.path
mô-đun.
os.path.join( "C:", "meshes", "as" )
Hoặc sử dụng chuỗi thô
r"C:\meshes\as"
Tôi cũng sẽ đề nghị không có khoảng trắng trong đường dẫn hoặc tên tệp. Và bạn có thể sử dụng dấu gạch chéo kép trong chuỗi của mình.
"C:\\meshes\\as.jpg"
"C:\"
như là mục đầu tiên? Điều đó có làm xáo trộn một số sự sạch sẽ của việc sử dụng join
?
"C:\"
ở giữa tên tệp. Ngoài ra, bạn có thể sử dụng os.path.normpath
trước hoặc sau khi tham gia, để đảm bảo đường dẫn được in độc đáo.
os.path.join( "C:\\", "meshes", "as" )
Có, \
trong chuỗi ký tự Python biểu thị sự bắt đầu của một chuỗi thoát. Trong đường dẫn của bạn, bạn có một chuỗi thoát hai ký tự hợp lệ \a
, được thu gọn thành một ký tự đó là ASCII Bell :
>>> '\a'
'\x07'
>>> len('\a')
1
>>> 'C:\meshes\as'
'C:\\meshes\x07s'
>>> print('C:\meshes\as')
C:\meshess
Các chuỗi thoát phổ biến khác bao gồm \t
(tab), \n
(nguồn cấp dữ liệu), \r
(trả lại vận chuyển):
>>> list('C:\test')
['C', ':', '\t', 'e', 's', 't']
>>> list('C:\nest')
['C', ':', '\n', 'e', 's', 't']
>>> list('C:\rest')
['C', ':', '\r', 'e', 's', 't']
Như bạn có thể thấy, trong tất cả các ví dụ này, dấu gạch chéo ngược và ký tự tiếp theo trong nghĩa đen được nhóm lại với nhau để tạo thành một ký tự duy nhất trong chuỗi cuối cùng. Danh sách đầy đủ các chuỗi thoát của Python có ở đây .
Có nhiều cách khác nhau để đối phó với điều đó:
Python sẽ không xử lý các chuỗi thoát trong chuỗi ký tự có tiền tố bằng r
hoặcR
:
>>> r'C:\meshes\as'
'C:\\meshes\\as'
>>> print(r'C:\meshes\as')
C:\meshes\as
Python trên Windows cũng nên xử lý các dấu gạch chéo về phía trước.
Bạn có thể sử dụng os.path.join
...
>>> import os
>>> os.path.join('C:', os.sep, 'meshes', 'as')
'C:\\meshes\\as'
... hoặc mô-đun mới hơnpathlib
>>> from pathlib import Path
>>> Path('C:', '/', 'meshes', 'as')
WindowsPath('C:/meshes/as')
Trong Windows, bạn có thể sử dụng /
trong đường dẫn của mình giống như Linux hoặc macOS ở mọi nơi miễn là bạn sử dụng PowerShell làm giao diện dòng lệnh. Nó được cài đặt sẵn trên Windows và nó hỗ trợ nhiều lệnh Linux như ls
lệnh.
Nếu bạn sử dụng Windows Command Prompt (cái xuất hiện khi bạn nhập cmd
vào Menu Bắt đầu của Windows), bạn cần chỉ định các đường dẫn \
chỉ bên trong nó. Bạn có thể sử dụng /
các đường dẫn ở tất cả các nơi khác (trình soạn thảo mã, chế độ tương tác Python, v.v.).
Trong trường hợp bạn muốn dán đường dẫn windows từ nguồn khác (giả sử File Explorer) - bạn có thể thực hiện thông qua input()
cuộc gọi trong bảng điều khiển python:
>>> 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'
Sau đó chỉ cần sao chép kết quả