Hỏi về vấn đề xử lí chuỗi Path trong Python

Mình có 2 chuỗi Path Python như sau :

path_output="D:\Project\AutoLazy\REBD-615\[email protected]"

path_ffmpeg="D:\ffmpeg-2022-01-19-git-dd17c86aa1-full_build\bin\ffmpeg.exe"

Mình thử chạy lệnh Print thì ra kết quả sau :heart_eyes:

D:\Project\AutoSiteNga\REBD-615\[email protected]
D:
  fmpeg-2022-01-19-git-dd17c86aa1-full_builin
                                             fmpeg.exe

Cho mình hỏi là tại sao 2 chuỗi giống nhau về cấu trúc khi in lại ra 2 kết quả khác nhau vậy

Vì ký tự \f là ký tự Form Feed.
Nó thường dùng để phân trang.
Cũng tương tự như \t, \n

Có hai cách để xử lý
một là escape \f bằng cách thêm 1 dấu \ vào thành \\f

hai: sử dụng rawstring

path_ffmpeg= r"D:\ffmpeg-2022-01-19-git-dd17c86aa1-full_build\bin\ffmpeg.exe"
7 Likes

Hum qua mình cũng search trên StackOver thì dùng thêm r .Còn mình trc đó thì thêm dấu “/” sau dấu “” để khắc phục nhưng k hiểu vì sao…Thanks bạn đã giải thích
Bạn biết hàm nào để để đối phó khi ng dùng nhập vào một chuỗi kiểu này thì nó fix lại thành một chuỗi đúng chuẩn không nhỉ ?

Thanks

Giải pháp bạn phải tự tìm thôi.

Tuy nhiên đối với đường dẫn thư mục, mình sẽ không xử lý string mà sử dụng module os.path

Lý do là mình sử dụng cả Windows và Linux, và muốn code viết ra chạy được trên nhiều platform.

3 Likes

Mình thử dùng

path_ffmpeg="D:\ffmpeg-2022-01-19-git-dd17c86aa1-full_build\bin\ffmpeg.exe"
path_ffmpeg=os.path.split(path_ffmpeg)
print(path_ffmpeg)

Và kết quả như này :heart_eyes:

('D:', '\x0cfmpeg-2022-01-19-git-dd17c86aa1-full_build\x08in\x0cfmpeg.exe')

Bó tay thực sự…

xài thẳng / luôn chứ xài \ chi nữa :face_with_thermometer:

4 Likes

Nghĩa là nếu người dùng nhập vô 1 path thì mình replace " \" sang “/”
Ý hay đó …Để mình thử …Thanks nhé

người dùng nhập path vào thì \ nó đúng là \ rồi đâu có như ký tự trong string khi viết code :V viết code mà xài string chứa path thì cứ xài / hết.

path_ffmpeg="D:/ffmpeg-2022-01-19-git-dd17c86aa1-full_build/bin/ffmpeg.exe"

viết code hardcode path thì cứ xài /, xài \ làm gì

còn chuỗi người dùng input thì chắc chắn ko bị escape \t \n gì rồi, muốn input gì thì input. Mà nên xài pathlib để xử lý path trong Python nha, os.path lỗi thời rồi :V

11 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?