1 Câu hỏi: Truy cập các vị trí tệp được nối mạng với pathlib

câu hỏi được tạo ra tại Wed, May 8, 2019 12:00 AM

Tôi đang thử kiểm tra chương trình bằng mô-đun pathlib của Python. Với mô-đun os, bạn đã từng có thể truy cập các ổ đĩa được nối mạng chỉ bằng cách làm theo cùng một dạng giống như url. Nhưng vì một số lý do, bạn không thể làm điều này với pathlib. Hoặc ít nhất tôi không thể tìm ra cách để làm điều đó.

Với mô-đun os, tất cả mọi người sẽ phải làm là:

path = os.path.join(r'//server-01', 'directory', 'filename.txt')

Nhưng nếu bạn cố gắng thực hiện điều này với mô-đun pathlib, người ta có thể thử một cái gì đó như:

path = Path('//server-01', 'directory', 'filename.txt')

Nếu tôi đang dùng máy Windows, đường dẫn sẽ phân giải thành:

>> WindowsPath('/server-01/directory/filename.txt)

Và nếu tôi nói path.exists() thì tất nhiên tôi sẽ nhận được False. Bởi vì, /server-01 KHÔNG tồn tại, tuy nhiên //server-01 KHÔNG tồn tại.

Tất nhiên, lý tưởng nhất là kết quả mà tôi mong đợi nhận được khi chạy path.exists()True và nếu tôi hiển thị path thì nó sẽ trông giống như:

>> WindowsPath('//server-01/directory/filename.txt')

Cảm ơn sự giúp đỡ của bạn trong phần nâng cao!

Cập nhật

Đó là một loại hacky, nhưng tôi đoán nó hoạt động, bất kể tôi muốn biết cách đúng để làm điều đó.

Để truy cập vị trí mạng, bạn có thể:

os.chdir(join('//server-01', 'directory', 'filename.txt'))
path = Path()
path = path.resolve()

Kết quả là một cái gì đó như:

>> WindowsPath('//server-01/directory/filename.txt')
path.exists()
>> True

Vì vậy, đó là tin tốt. Nếu bất cứ ai biết cách hợp pháp để làm điều đó, hãy cho tôi biết.

    
2
  1. Liệu PureWindowsPath có hoạt động trong trường hợp này không?
    2019-05-08 16: 35: 56Z
  2. Có vẻ như không phải vậy. Tôi nghĩ vấn đề là ngay cả trong tài liệu cũng nói rằng nó sẽ thu gọn nhiều nhát chém thành một bất kể bạn làm gì. Nếu bạn xem tài liệu trong một trong các khối mã đó nó chứng minh rằng Được xem như đối tượng PureWindowsPath thừa hưởng từ PurePath, nó sẽ có cùng đặc điểm tôi nghĩ.
    2019-05-14 16: 44: 46Z
1 Câu trả lời                              1                         

Khởi tạo path dưới dạng PureWindowsPath nên thực hiện thủ thuật:

path = PureWindowsPath("//server-01", "directory", "file") # '\\\\server-01\\directory\\file'
    
0
2019-05-08 16: 57: 04Z
  1. Tôi không chắc mình có làm gì sai không nhưng tôi đã thử và nó vẫn giải quyết được một dấu gạch chéo về phía trước.
    2019-05-13 20: 09: 20Z
nguồn đặt đây