Chuyển đổi đường dẫn windows thành chuỗi python

Mỗi hệ điều hành có các quy tắc khác nhau để xây dựng đường dẫn tệp. Ví dụ: Linux sử dụng dấu gạch chéo lên cho đường dẫn, trong khi Windows sử dụng dấu gạch chéo ngược

Sự khác biệt nhỏ này có thể gây ra sự cố nếu bạn đang làm việc trên một dự án và bạn muốn các nhà phát triển khác đến từ các hệ điều hành khác nhau mở rộng mã của bạn

May mắn thay, nếu bạn đang viết mã bằng Python, mô-đun Pathlib sẽ thực hiện công việc nặng nhọc bằng cách cho phép bạn đảm bảo rằng đường dẫn tệp của bạn hoạt động giống nhau trong các hệ điều hành khác nhau. Ngoài ra, nó cung cấp các chức năng và hoạt động để giúp bạn tiết kiệm thời gian trong khi xử lý và thao tác với các đường dẫn

điều kiện tiên quyết

Pathlib là mặc định với Python >= 3. 4. Tuy nhiên, nếu bạn đang sử dụng phiên bản Python thấp hơn 3. 4, bạn sẽ không có quyền truy cập vào mô-đun này

Pathlib hoạt động như thế nào?

Để hiểu cách bạn có thể xây dựng một đường dẫn cơ bản bằng Pathlib, hãy tạo một tệp Python mới có tên là

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
3 và đặt nó vào một thư mục cụ thể

Mở tệp và nhập nội dung sau

import pathlib

p = pathlib.Path(__file__)
print(p)
ví dụ. py

Trong ví dụ này, chúng tôi nhập mô-đun Pathlib. Sau đó, chúng ta tạo một biến mới có tên là

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
4 để lưu trữ đường dẫn. Ở đây, chúng tôi sử dụng đối tượng Đường dẫn từ Pathlib với một biến tích hợp trong Python có tên là __file__ để chỉ đường dẫn tệp mà chúng tôi hiện đang viết trong đó
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
3

Nếu chúng tôi in

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
4, chúng tôi sẽ nhận được đường dẫn đến tệp mà chúng tôi hiện đang ở

/home/rochdikhalid/dev/src/package/example.py

Như được hiển thị ở trên, Pathlib tạo đường dẫn đến tệp này bằng cách đặt tập lệnh cụ thể này vào đối tượng Đường dẫn. Pathlib chứa nhiều đối tượng như

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
7 và
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8, chúng ta sẽ tìm hiểu thêm trong các phần sau

Trước khi chúng ta chuyển sang phần này, Pathlib chia các đường dẫn hệ thống tệp thành hai lớp khác nhau đại diện cho hai loại đối tượng đường dẫn. Con đường tinh khiết và con đường cụ thể

Chuyển đổi đường dẫn windows thành chuỗi python
các lớp PurePath()

Đường dẫn thuần túy cung cấp các tiện ích để xử lý và thao tác trên đường dẫn tệp của bạn mà không cần thực hiện các thao tác ghi, trong khi đường dẫn cụ thể cho phép bạn thao tác và thực hiện các thao tác ghi trên đường dẫn tệp của mình

Nói cách khác, một con đường cụ thể là một lớp con của một con đường thuần túy. Nó kế thừa các thao tác từ lớp cha và bổ sung thêm các thao tác vào/ra thực hiện lời gọi hệ thống

Đường dẫn thuần túy trong Python

Đường dẫn thuần túy thao tác đường dẫn tệp trên máy của bạn ngay cả khi nó thuộc hệ điều hành khác

Ví dụ: giả sử bạn đang dùng Linux và bạn muốn sử dụng đường dẫn tệp Windows. Ở đây, các đối tượng lớp Đường dẫn thuần túy sẽ giúp bạn có được đường dẫn hoạt động trên máy của mình với một số thao tác cơ bản như tạo đường dẫn con hoặc truy cập các phần riêng lẻ của đường dẫn

Nhưng các đường dẫn thuần túy sẽ không thể bắt chước một số hoạt động khác như tạo thư mục hoặc tệp vì bạn không thực sự ở trong hệ điều hành đó

Cách sử dụng đường dẫn thuần túy

Như bạn có thể thấy trong sơ đồ trên, các đường dẫn thuần túy bao gồm ba lớp xử lý bất kỳ đường dẫn hệ thống tệp nào trên máy của bạn

PurePath() là nút gốc cung cấp các hoạt động xử lý cho mọi đối tượng đường dẫn trong Pathlib

Khi bạn khởi tạo

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8, nó sẽ tạo hai lớp để xử lý các đường dẫn Windows và đường dẫn không phải Windows.
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8 tạo một đối tượng đường dẫn chung "đường dẫn bất khả tri", bất kể bạn đang chạy trên hệ điều hành nào

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')

PurePath() trong ví dụ trên tạo ra một

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
1 bởi vì chúng tôi cho rằng chúng tôi đang chạy trên máy Linux. Nhưng nếu bạn khởi tạo nó trên Windows, bạn sẽ nhận được một cái gì đó như
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
2

PurePosixPath() là nút con của PurePath() được triển khai cho các đường dẫn hệ thống tệp không phải của Windows

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')

Bạn sẽ không gặp bất kỳ lỗi nào nếu bạn khởi tạo

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
1 trên Windows vì quá đơn giản, lớp này không thực hiện lời gọi hệ thống

PureWindowsPath() là nút con của PurePath() được triển khai cho các đường dẫn hệ thống tệp Windows

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')

Điều tương tự cũng áp dụng cho

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
4 vì lớp này không cung cấp lời gọi hệ thống, do đó, việc khởi tạo nó sẽ không gây ra bất kỳ lỗi nào cho các hệ điều hành khác

Thuộc tính đường dẫn thuần túy

Mỗi phân lớp trong

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8 cung cấp các thuộc tính sau

PurePath(). cha mẹ xuất ra cha mẹ của đường dẫn

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent                     
Out[*]: PurePosixPath('/src/goo/scripts')

Trong ví dụ trên, chúng tôi đang sử dụng thuộc tính

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
6 để lấy đường dẫn của cha logic của
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
7

PurePath(). cha mẹ [] xuất ra tổ tiên của đường dẫn

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')

Bạn phải luôn chỉ định chỉ mục tổ tiên trong ngoặc vuông như đã thấy ở trên. Trong Trăn 3. 10 trở lên, bạn có thể sử dụng các lát cắt và giá trị chỉ số âm

PurePath(). name cung cấp tên của thành phần cuối cùng trong đường dẫn của bạn

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'

Trong ví dụ này, thành phần đường dẫn cuối cùng là

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
8. Vì vậy, thuộc tính
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
9 xuất ra tên của tệp
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
8 là tệp chính với hậu tố của nó. py

Mặt khác, PurePath(). hậu tố cung cấp phần mở rộng tệp của thành phần cuối cùng trong đường dẫn của bạn

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix                    
Out[*]: '.py'

So với thuộc tính

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
9, thuộc tính
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent                     
Out[*]: PurePosixPath('/src/goo/scripts')
2 xuất phần mở rộng tệp và loại trừ tên tệp

PurePath(). gốc chỉ xuất ra tên của thành phần cuối cùng trong đường dẫn của bạn mà không có hậu tố

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'

Như đã thấy ở trên, thuộc tính

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent                     
Out[*]: PurePosixPath('/src/goo/scripts')
3 không bao gồm hậu tố của thành phần cuối cùng
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
8 và chỉ cung cấp tên của tệp

Phương pháp đường dẫn thuần túy

Mỗi lớp con của

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8 cung cấp các phương thức sau

PurePath(). is_absolute() kiểm tra xem đường dẫn của bạn có tuyệt đối hay không

/home/rochdikhalid/dev/src/package/example.py
0

Lưu ý rằng đường dẫn tuyệt đối bao gồm tên gốc và tên ổ đĩa. Trong trường hợp này,

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8 không cho phép chúng tôi biết tên ổ đĩa

Nếu bạn sử dụng

In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
4, bạn có thể biểu diễn một đường dẫn tuyệt đối có chứa tên ổ đĩa như
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent                     
Out[*]: PurePosixPath('/src/goo/scripts')
8

PurePath(). is_relative() kiểm tra xem đường dẫn có thuộc đường dẫn đã cho khác hay không

/home/rochdikhalid/dev/src/package/example.py
1

Trong ví dụ này, đường dẫn đã cho

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').parent                     
Out[*]: PurePosixPath('/src/goo/scripts')
9 là một phần của hoặc thuộc về đường dẫn
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
4, trong khi đường dẫn đã cho khác
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
1 tăng
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
2 vì nó không có mối quan hệ tương đối với đường dẫn
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
4

PurePath(). joinpath() nối đường dẫn với các đối số đã cho (đường dẫn con)

/home/rochdikhalid/dev/src/package/example.py
2

Lưu ý rằng không cần thêm dấu gạch chéo vào các đối số đã cho, vì phương thức

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
4 xử lý việc này cho bạn

PurePath(). match() kiểm tra xem đường dẫn có khớp với một mẫu nhất định hay không

/home/rochdikhalid/dev/src/package/example.py
3

Dựa trên các ví dụ trên, mẫu phải khớp với đường dẫn. Nếu mẫu đã cho là tuyệt đối, thì đường dẫn cũng phải tuyệt đối

PurePath(). with_name() thay đổi tên của thành phần cuối cùng bằng hậu tố của nó

/home/rochdikhalid/dev/src/package/example.py
4

Phương thức

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
5 không thay đổi vĩnh viễn tên của thành phần cuối cùng. Ngoài ra, nếu đường dẫn đã cho không chứa tên, sẽ xảy ra lỗi như đã đề cập trong

PurePath(). with_stem() chỉ thay đổi tên của thành phần cuối cùng của đường dẫn

/home/rochdikhalid/dev/src/package/example.py
5

Điều này tương tự như phương pháp

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
5.
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
7 tạm thời thay đổi tên của thành phần cuối cùng. Ngoài ra, nếu đường dẫn đã cho không chứa tên, sẽ xảy ra lỗi

PurePath(). with_suffix() tạm thời thay đổi hậu tố hoặc phần mở rộng của thành phần cuối cùng trong đường dẫn của bạn.  

/home/rochdikhalid/dev/src/package/example.py
6

Nếu tên của đường dẫn đã cho không chứa hậu tố, phương thức

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
8 sẽ thêm hậu tố cho bạn

/home/rochdikhalid/dev/src/package/example.py
7

Tuy nhiên, nếu chúng tôi không bao gồm hậu tố và chúng tôi để trống đối số

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
9, thì hậu tố hiện tại sẽ bị xóa

/home/rochdikhalid/dev/src/package/example.py
8

Một số phương thức như

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
7 và
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
1 gần đây đã được thêm vào Python 3. 9 trở lên. Vì vậy, nếu bạn gọi các phương thức này bằng Python 3. 8 hoặc thấp hơn, một lỗi thuộc tính được nâng lên

Đường dẫn bê tông trong Python

Đường dẫn bê tông cho phép bạn xử lý, thao tác và thực hiện các thao tác ghi trên các đường dẫn hệ thống tệp khác nhau

Nói cách khác, loại đối tượng đường dẫn này giúp bạn tạo ví dụ như một tệp mới, một thư mục mới và thực hiện các thao tác nhập/xuất khác khi không ở trong hệ điều hành đó

Cách sử dụng đường bê tông

Đường dẫn cụ thể xử lý bất kỳ đường dẫn hệ thống tệp nào và thực hiện cuộc gọi hệ thống trên máy của bạn. Các đối tượng đường dẫn đó là các đường dẫn con của các đường dẫn thuần túy và bao gồm ba lớp con giống như các đối tượng thuần túy

Path() là nút con của

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8, nó cung cấp các thao tác xử lý với khả năng thực hiện các thao tác ghi trên đường dẫn của bạn

Khi bạn khởi tạo

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3, nó sẽ tạo hai lớp để xử lý các đường dẫn Windows và đường dẫn không phải Windows. Giống như
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8,
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3 cũng tạo một đối tượng đường dẫn chung "đường dẫn bất khả tri", bất kể bạn đang chạy trên hệ điều hành nào

/home/rochdikhalid/dev/src/package/example.py
9

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3 trong ví dụ trên tạo ra một
In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
7 vì chúng tôi cho rằng chúng tôi đang chạy trên máy Linux. Nhưng nếu bạn khởi tạo nó trên Windows, bạn sẽ nhận được một cái gì đó như
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
8

PosixPath() là nút con của

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3 và
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
1, được triển khai để xử lý và thao tác các đường dẫn hệ thống tệp không phải của Windows

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
0

Bạn sẽ gặp lỗi nếu khởi tạo

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
7 trên máy Windows vì bạn không thể thực hiện cuộc gọi hệ thống khi đang chạy trên một hệ điều hành khác

WindowsPath() là nút con của

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3 và
In [*]: pathlib.PureWindowsPath('setup.py')                                     
Out[*]: PureWindowsPath('setup.py')
4 được triển khai cho các đường dẫn hệ thống tệp Windows

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
1

Điều tương tự cũng áp dụng cho

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix                    
Out[*]: '.py'
4 vì bạn đang chạy trên một hệ điều hành khác – vì vậy việc khởi tạo nó sẽ gây ra lỗi

Thuộc tính của đường dẫn bê tông

Vì đường dẫn cụ thể là lớp con của đường dẫn thuần túy, bạn có thể làm mọi thứ với đường dẫn cụ thể bằng cách sử dụng thuộc tính

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8. Điều này có nghĩa là chúng ta có thể sử dụng, ví dụ, thuộc tính
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix                    
Out[*]: '.py'
6 để thêm hậu tố vào một đường dẫn cụ thể

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
2

Hoặc, bạn có thể kiểm tra xem đường dẫn đã cho có liên quan đến đường dẫn ban đầu không

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
3

Luôn nhớ rằng các đường dẫn cụ thể kế thừa các thao tác xử lý từ các đường dẫn thuần túy và thêm các thao tác ghi để thực hiện lời gọi hệ thống và cấu hình đầu vào/đầu ra

Phương pháp đường bê tông

Mỗi lớp con của

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').name                      
Out[*]: 'main.py'
3 cung cấp các phương thức sau để xử lý các đường dẫn và thực hiện các cuộc gọi hệ thống

Con đường(). iterdir() trả về nội dung của một thư mục. Giả sử chúng ta có thư mục sau chứa các tệp sau

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
4thư mục dữ liệu

Để trả về nội dung của thư mục

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
1, bạn có thể sử dụng phương thức
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix                    
Out[*]: '.py'
9 tại đây

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
5

Phương thức

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').suffix                    
Out[*]: '.py'
9 tạo một trình vòng lặp liệt kê các tệp một cách ngẫu nhiên

Con đường(). tồn tại() kiểm tra xem tệp/thư mục có tồn tại trong đường dẫn hiện tại không. Hãy sử dụng thư mục của ví dụ trước (thư mục hiện tại của chúng ta là

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
1)

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
6

Các. phương thức tồn tại () trả về

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
2 vì tệp đã cho tồn tại trong thư mục
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
3. Phương thức trả về
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
2 nếu tệp không tồn tại

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
7

Điều tương tự cũng áp dụng cho các thư mục, phương thức trả về

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
2 nếu thư mục đã cho tồn tại và trả về
In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
2 nếu không

Con đường(). mkdir() tạo một thư mục mới tại một đường dẫn nhất định

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
8

Theo tài liệu chính thức, phương thức

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
7 có ba đối số. Hiện tại chúng tôi sẽ chỉ tập trung vào
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
8 và
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
9

Cả hai đối số được đặt thành

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
2 làm mặc định.
/home/rochdikhalid/dev/src/package/example.py
01 gây ra lỗi FileNotFound trong trường hợp thiếu thư mục gốc, trong khi
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
9 gây ra lỗi FileExists nếu thư mục đã cho đã tồn tại

Trong ví dụ trên, bạn có thể đặt các đối số thành

In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
2 để bỏ qua các lỗi được đề cập và cập nhật thư mục

Chúng tôi cũng có thể tạo một tệp mới tại một đường dẫn nhất định bằng cách sử dụng phương thức

/home/rochdikhalid/dev/src/package/example.py
04

In [*]: pathlib.PurePath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
9

Logic tương tự áp dụng cho phương pháp

/home/rochdikhalid/dev/src/package/example.py
05. Ở đây, bạn có thể đặt
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
9 thành
In [*]: pathlib.PurePath('/src/goo/scripts/main.py').stem                      
Out[*]: 'main'
2 để bỏ qua lỗi FileExists và cập nhật tệp

Đường dẫn(). rename() đổi tên tệp/thư mục theo một đường dẫn nhất định. Hãy lấy một ví dụ bằng cách sử dụng thư mục của chúng tôi

In [*]: p = pathlib.PurePath('/src/goo/scripts/main.py')
		p.parents[0]               
Out[*]: PurePosixPath('/src/goo/scripts')

In [*]: p.parents[1]                
Out[*]: PurePosixPath('/src/goo')
1

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
0

Nếu bạn chỉ định một tệp không tồn tại cho phương thức, nó sẽ gây ra lỗi FileNotFound. Điều tương tự cũng áp dụng cho các thư mục

Con đường(). read_text() trả về nội dung của tệp ở định dạng chuỗi

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
1

Ngoài ra, bạn có thể sử dụng phương thức

/home/rochdikhalid/dev/src/package/example.py
09 để ghi nội dung vào tệp

In [*]: pathlib.PurePosixPath('setup.py')                                            
Out[*]: PurePosixPath('setup.py')
2

Lưu ý rằng phương thức

/home/rochdikhalid/dev/src/package/example.py
10 đã được thêm vào Python 3. 5 và đã được cập nhật gần đây trong Python 3. 10 để có một số tham số bổ sung

Lưu ý quan trọng

Bạn có thể tự hỏi tại sao bạn cần sử dụng đường dẫn hệ thống tệp Windows – bởi vì mọi gói phải tương thích với các hệ điều hành khác, không chỉ Windows

Bạn đúng nếu mục tiêu là tạo ra một đường dẫn bất khả tri về hệ điều hành. Tuy nhiên, đôi khi chúng tôi không thể thực hiện việc này do một số cài đặt dành riêng cho hệ thống Windows hoặc Posix. Đó là lý do tại sao những đối tượng đó có sẵn để giúp các nhà phát triển giải quyết các trường hợp sử dụng đó

Một số gói nhắm mục tiêu các sự cố chỉ xuất hiện trong hệ sinh thái Windows và Python cung cấp các trường hợp sử dụng đó trong thư viện này

Tiếp theo là gì?

Hy vọng, hướng dẫn này giúp bạn tìm hiểu cách thức và lý do sử dụng Pathlib cũng như cách nó hữu ích để xử lý và thao tác các đường dẫn hệ thống tệp

Sẽ thật tuyệt khi chơi với những gì bạn đã học và biến mọi thứ thành một dự án thực sự. Nếu bạn có bất kỳ câu hỏi nào, vui lòng kết nối và liên hệ với tôi bất cứ lúc nào trên LinkedIn

Ngoài ra, bạn có thể xem kênh của tôi trên YouTube nơi tôi chia sẻ video về những gì tôi đang học và xây dựng bằng mã

Hẹn gặp lại bạn trong hướng dẫn tiếp theo và tiếp tục tiến về phía trước

Người giới thiệu

Có rất nhiều điều để biết. Trong bài đăng trên blog này, tôi đã trình bày những điều cơ bản bạn cần để sử dụng Pathlib trong dự án của mình

Tài liệu chính thức nêu bật nhiều phương thức và thuộc tính hơn mà bạn có thể áp dụng cho đường dẫn hệ thống tệp của mình

  • Pathlib - Đường dẫn hệ thống tệp hướng đối tượng

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO

QUẢNG CÁO


Chuyển đổi đường dẫn windows thành chuỗi python
Rochdi Khalid

Mã hóa để tiếp cận không gian


Nếu bài viết này hữu ích, hãy tweet nó

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Làm cách nào để chuyển đổi chuỗi đường dẫn Windows thành đường dẫn trong Python?

Sử dụng hàm tạo của lớp Đường dẫn để chuyển Chuỗi thành Đường dẫn trong Python . Bạn cần nhập lớp Đường dẫn từ pathlib. Chúng tôi đã sử dụng hàm tạo Path() để chuyển đổi Chuỗi thành Đường dẫn. Hàm tạo này chấp nhận một chuỗi chứa đường dẫn bắt buộc và chuyển đổi chuỗi thành đường dẫn POSIX hoặc đường dẫn Windows dựa trên hệ thống của bạn.

Làm cách nào để sử dụng đường dẫn tệp Windows trong Python?

Để sử dụng nó, bạn chỉ cần chuyển đường dẫn hoặc tên tệp vào đối tượng Path() mới bằng cách sử dụng dấu gạch chéo lên phía trước và nó xử lý phần còn lại. Lưu ý hai điều ở đây. Bạn nên sử dụng dấu gạch chéo về phía trước với các hàm pathlib. Đối tượng Path() sẽ chuyển đổi các dấu gạch chéo về phía trước thành loại dấu gạch chéo chính xác cho hệ điều hành hiện tại.

Đường dẫn () trong Python là gì?

PATH là biến môi trường chứa danh sách đường dẫn đến thư mục . Mỗi đường dẫn trong PATH được phân tách bằng dấu hai chấm hoặc dấu chấm phẩy—dấu hai chấm cho các hệ thống dựa trên UNIX và dấu chấm phẩy cho Windows. Nó giống như một biến Python với một chuỗi dài làm giá trị của nó.

Tên Windowspath là gì?

Nói chung, tên đường dẫn Windows bao gồm một trình xác định ổ đĩa tùy chọn và đường dẫn dành riêng cho ổ đĩa . Đường dẫn Windows có thể là tuyệt đối nhưng vẫn liên quan đến ổ đĩa hiện tại; .