Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Tôi cần chuyển một đường dẫn phụ đề đến VLC, nó chỉ đi theo các đường dẫn gốc (dấu gạch chéo ngược trên cửa sổ, chém về phía trước trên UNIX) và cần thoát khỏi không gian.

Giả sử tôi có một đường dẫn bản địa QT với một không gian trong đó.

path = path.replace('/','\\').replace(' ','\ ')
1

Làm cách nào để chuyển đổi nó thành điều này:

path = path.replace('/','\\').replace(' ','\ ')
2

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Ekhumoro

112K19 Huy hiệu vàng218 Huy hiệu bạc324 Huy hiệu đồng19 gold badges218 silver badges324 bronze badges

Đã hỏi 24 tháng 2 năm 2017 lúc 22:52Feb 24, 2017 at 22:52

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

7

Để xử lý vấn đề này, tôi thực sự đề nghị sử dụng

os.path.normpath('C:/Users/Thinkpad/Downloads/test file.srt')

Nếu bạn nhập tất cả các chuỗi tên tệp của mình bằng cách sử dụng dấu gạch chéo phía trước, và sau đó để

path = path.replace('/','\\').replace(' ','\ ')
3 thay đổi chúng thành dấu gạch chéo ngược cho bạn, theo cách này.

Đã trả lời ngày 24 tháng 2 năm 2017 lúc 23:07Feb 24, 2017 at 23:07

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

lmiguelvargasflmiguelvargasflmiguelvargasf

57.2K43 Huy hiệu vàng212 Huy hiệu bạc215 Huy hiệu Đồng43 gold badges212 silver badges215 bronze badges

Không chắc chắn nếu có bất cứ điều gì trong thư viện tiêu chuẩn để xử lý việc này, nhưng nếu nó chỉ là chém và không gian, bạn cần một chuỗi đơn giản thay thế sẽ nhanh hơn và đơn giản hơn. I E.

path = path.replace('/','\\').replace(' ','\ ')

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Đã trả lời ngày 24 tháng 2 năm 2017 lúc 23:03Feb 24, 2017 at 23:03

Tôi đang thực hiện một số tự động hóa với kịch bản shell và tôi gặp khó khăn trong việc chạy tập lệnh Python trong đó đường dẫn của nó có không gian. Hãy tha thứ cho tôi nếu tôi đã phạm bất kỳ sai lầm hoặc thực hành xấu trong mã, tôi mới bắt đầu học ngày hôm qua :).

Đây là mã:

# grabs root directory from the script path
script_path="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
proj_root="${script_path///modelsim}"
proj_root="${proj_root///test}"

# removing spaces
proj_root_no_spaces="${proj_root/' '/'\ '}"

log_dir=${proj_root_no_spaces}/src/python/graph_log.py #path to python file relative to root project dir

# checking output
echo "$log_dir"
create_graphs="python3 \""$log_dir"\""
echo "$create_graphs"

# run command
$create_graphs

Tập lệnh này cho đầu ra này:

1) /mnt/c/Users/Varun\ Govind/Desktop/roulette_BACKUP/roulette/src/python/graph_log.py 
2) python3 "/mnt/c/Users/Varun\ Govind/Desktop/roulette_BACKUP/roulette/src/python/graph_log.py"
3) python3: can't open file '"/mnt/c/Users/Varun\': [Errno 2] No such file or directory

Dòng đầu tiên là đường dẫn đầy đủ đến tệp Python, bạn có thể thấy rằng có một không gian ở giữa tên người dùng của tôi vì vậy tôi đã thoát nó bằng một dấu gạch chéo ngược. Dòng thứ hai là lệnh Python đầy đủ mà tôi đang chạy; Ngoài việc thoát khỏi không gian, tôi đã bao quanh con đường với các quote đôi. Nếu tôi chạy điều đó tuy nhiên, tôi sẽ gặp lỗi trên dòng 3.

Nếu tôi sao chép và dán dòng 2 trực tiếp vào vỏ của tôi và chạy nó, nó hoạt động. Tôi không chắc tại sao lệnh của tôi không hoạt động trong tập lệnh shell của tôi. Có điều gì đó không ổn với cách tôi thoát khỏi không gian hoặc chạy lệnh Python?

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Để thoát khỏi khoảng trống trong đường dẫn tệp Windows, hãy đặt các dấu ngoặc kép xung quanh phần của đường dẫn có không gian trong đó. Ví dụ: C: \ "Thư mục kiểm tra" \ text.txt. Bạn cũng có thể đặt các dấu ngoặc kép xung quanh toàn bộ đường dẫn để đảm bảo bạn không bỏ lỡ bất kỳ không gian nào.

Các môi trường dòng lệnh như dấu nhắc lệnh Windows và PowerShell sử dụng các khoảng trắng để riêng biệt các lệnh và đối số, nhưng tên và tên thư mục cũng có thể chứa khoảng trắng. Để chỉ định một đường dẫn tệp có không gian bên trong nó, bạn sẽ cần phải thoát khỏi đó.

Dòng lệnh 101: Tại sao bạn phải thoát khỏi khoảng trống

Trình thoát khỏi một nhân vật thay đổi ý nghĩa của nó. Ví dụ, thoát khỏi một không gian sẽ khiến vỏ đối xử với nó như một ký tự không gian tiêu chuẩn chứ không phải là một ký tự đặc biệt phân tách các đối số dòng lệnh.

Ví dụ: hãy để nói rằng bạn có một tệp văn bản mà bạn muốn xem nội dung của. Bạn có thể làm điều đó với lệnh loại. Giả sử tệp văn bản là tại

path = path.replace('/','\\').replace(' ','\ ')
4, lệnh in trong lệnh trong lệnh sẽ hiển thị nội dung của nó:

type C:\Test\File.txt

Tuyệt quá. Bây giờ, điều gì sẽ xảy ra nếu bạn có cùng một tệp tại

path = path.replace('/','\\').replace(' ','\ ')
5? Nếu bạn thử chạy lệnh dưới đây, nó đã giành được công việc của Google, những không gian trong đường dẫn tệp đang cản trở.

type C:\Test Folder\Test File.txt

Dòng lệnh cho rằng bạn đang cố gắng tìm kiếm một tệp có tên & nbsp; ________ 16 và nói rằng nó không thể tìm thấy đường dẫn được chỉ định.

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Ba cách để thoát khoảng trống trên cửa sổ

Có ba cách khác nhau mà bạn có thể thoát khỏi đường dẫn tệp trên Windows:

  • Bằng cách đặt đường dẫn (hoặc các phần của nó) trong các dấu ngoặc kép (phạm).
  • Bằng cách thêm một ký tự Caret ( ^) trước mỗi không gian. (Điều này chỉ hoạt động trong lệnh nhắc lệnh/CMD và nó dường như không hoạt động với mọi lệnh.)
  • Bằng cách thêm một ký tự điểm nhấn (`) trước mỗi không gian. (Điều này chỉ hoạt động trong PowerShell, nhưng nó luôn hoạt động.)

Chúng tôi sẽ chỉ cho bạn cách sử dụng từng phương pháp.

Kèm theo con đường trong dấu ngoặc kép (”)

Cách tiêu chuẩn để đảm bảo Windows xử lý một đường dẫn tệp đúng cách là đặt nó trong các ký tự dấu ngoặc kép (). Ví dụ: với lệnh mẫu của chúng tôi ở trên, chúng tôi chỉ cần chạy như sau: thay vào đó:

type "C:\Test Folder\Test File.txt"

Bạn thực sự có thể gửi kèm các phần của đường dẫn trong dấu ngoặc kép nếu bạn thích. Ví dụ: hãy để nói rằng bạn đã có một tệp có tên File.txt trong thư mục đó. Bạn có thể chạy như sau:

type C:\"Test Folder"\File.txt

Tuy nhiên, đó là điều cần thiết trong hầu hết các trường hợp, bạn chỉ có thể sử dụng dấu ngoặc kép xung quanh toàn bộ con đường.

Giải pháp này hoạt động cả trong môi trường nhắc lệnh truyền thống (CMD) và trong Windows PowerShell.

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Đôi khi: Sử dụng nhân vật Caret để thoát khỏi không gian ( ^)

Trong lời nhắc lệnh, nhân vật Caret ( ^) sẽ cho phép bạn thoát khỏi không gian theo lý thuyết. Chỉ cần thêm nó trước mỗi không gian trong tên tệp. .

Ở đây, vấn đề: Mặc dù điều này nên hoạt động, và đôi khi nó không hoạt động mọi lúc. Việc xử lý lệnh nhắc lệnh của nhân vật này là lạ.

Ví dụ: với lệnh mẫu của chúng tôi, bạn đã chạy như sau và nó sẽ hoạt động:

type C:\Test^ Folder\Test^ File.txt

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Mặt khác, nếu chúng tôi thử mở tệp của mình trực tiếp bằng cách nhập đường dẫn của nó vào dấu nhắc lệnh, chúng tôi có thể thấy rằng ký tự caret thoát khỏi khoảng trống đúng cách:

C:\Test^ Folder\Test^ File.txt

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn

Vậy khi nào nó hoạt động? Vâng, dựa trên nghiên cứu của chúng tôi, nó dường như hoạt động với một số ứng dụng chứ không phải các ứng dụng khác. Số dặm của bạn có thể thay đổi tùy thuộc vào lệnh mà bạn sử dụng. Việc xử lý lệnh nhắc lệnh của nhân vật này là lạ. Hãy thử với bất kỳ lệnh nào mà bạn sử dụng, nếu bạn quan tâm đến thì nó có thể hoặc không hoạt động.

Để thống nhất, chúng tôi khuyên bạn nên gắn bó với các trích dẫn kép trong dấu nhắc lệnh hoặc chuyển sang PowerShell và sử dụng phương thức Accent Grave bên dưới.

PowerShell: Sử dụng ký tự giọng mộ (`)

PowerShell sử dụng ký tự giọng mộ (`) làm nhân vật thoát của nó. Chỉ cần thêm nó trước mỗi không gian trong tên tệp. (Bạn sẽ tìm thấy ký tự này phía trên phím tab và bên dưới phím ESC trên bàn phím của bạn.)

path = path.replace('/','\\').replace(' ','\ ')
0

Mỗi nhân vật giọng nói nghiêm trọng bảo PowerShell thoát khỏi nhân vật sau.

Lưu ý rằng điều này chỉ hoạt động trong môi trường PowerShell. Bạn sẽ phải sử dụng ký tự Caret trong Prompt Prompt.

Hướng dẫn python escape space in path - python thoát không gian trong đường dẫn


Nếu bạn quen thuộc với các hệ điều hành giống như UNIX như Linux và MacOS, bạn có thể đã quen với việc sử dụng ký tự dấu gạch chéo ngược (\) trước một không gian để thoát khỏi nó. Windows sử dụng điều này cho các đường dẫn tệp thông thường, do đó, nó không hoạt động-các ký tự CARET ( ^) và Grave Accent (`) là phiên bản Windows của Backslash, tùy thuộc vào vỏ dòng lệnh mà bạn sử dụng.

Đọc tiếp theo

  • ›Cách sử dụng GetOpts để phân tích các tùy chọn tập lệnh Shell Linux
  • ›Đồng hồ pixel của bạn đang trở nên tốt hơn trong việc theo dõi giấc ngủ
  • ›Làm thế nào chiếc xe điện đầu tiên của General Motors thất bại
  • Taxi taxi tự lái Waymo Waymo đang trở thành các nhà khí tượng học
  • V› V-Moda Crossfade 3 Đánh giá tai nghe không dây: Không ANC?Không vấn đề gì
  • ›Làm thế nào mastodon là mạng lưới chống đối xã hội
  • ›25 Quà tặng công nghệ tốt nhất dưới 100 đô la cho năm 2022