Hướng dẫn how do i remove a filename from the path in python? - làm cách nào để xóa tên tệp khỏi đường dẫn trong python?

Bạn gần như ở đó với việc bạn sử dụng chức năng

import os

filepath = './dir/subdir/filename.ext'
6. Bạn chỉ cần tham gia các chuỗi, như theo sau.

>>> import os
>>> '\\'.join(existGDBPath.split('\\')[0:-1])
'T:\\Data\\DBDesign'

Mặc dù, tôi khuyên bạn nên sử dụng chức năng

import os

filepath = './dir/subdir/filename.ext'
7 để thực hiện việc này, bạn chỉ cần vượt qua chuỗi và nó sẽ thực hiện công việc cho bạn. Vì, bạn dường như đang ở trên Windows, hãy xem xét sử dụng chức năng
import os

filepath = './dir/subdir/filename.ext'
8. Một ví dụ:

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'

Nếu bạn muốn cả tên tệp và đường dẫn thư mục sau khi được chia, bạn có thể sử dụng hàm

import os

filepath = './dir/subdir/filename.ext'
9 trả về một tuple, như sau.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')

Trong Python, bạn có thể lấy tên tệp (tên cơ sở), tên thư mục (thư mục) và phần mở rộng từ chuỗi đường dẫn hoặc tham gia các chuỗi để tạo chuỗi đường dẫn với mô -đun

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
0 trong thư viện tiêu chuẩn.

  • Os.Path - Thao tác tên đường dẫn phổ biến - Tài liệu Python 3.9.1RC1

Bài viết này mô tả các nội dung sau đây.

  • Sự khác biệt về phân tách đường dẫn bằng hệ điều hành
  • Nhận tên tệp (basename) từ một đường dẫn:
    print(os.sep)
    # /
    
    print(os.sep is os.path.sep)
    # True
    
    1
    • Tên tệp với phần mở rộng
    • Tên tệp mà không cần mở rộng
  • Lấy tên thư mục (thư mục) từ một đường dẫn:
    print(os.sep)
    # /
    
    print(os.sep is os.path.sep)
    # True
    
    2
  • Nhận cặp tệp và tên thư mục:
    print(os.sep)
    # /
    
    print(os.sep is os.path.sep)
    # True
    
    3
  • Ghi chú khi chuỗi đường dẫn biểu thị thư mục
  • Nhận tiện ích mở rộng:
    print(os.sep)
    # /
    
    print(os.sep is os.path.sep)
    # True
    
    4
    • Tạo một chuỗi đường dẫn với một tiện ích mở rộng khác
    • Nhận tiện ích mở rộng mà không có dấu chấm (khoảng thời gian)
    • Ví dụ về các trường hợp như
      print(os.sep)
      # /
      
      print(os.sep is os.path.sep)
      # True
      
      5
  • Tạo chuỗi đường dẫn bằng cách kết hợp tên tệp và tên thư mục:
    print(os.sep)
    # /
    
    print(os.sep is os.path.sep)
    # True
    
    6
    • Tạo chuỗi đường dẫn cho một tệp khác trong cùng một thư mục
  • Sử dụng các định dạng hệ điều hành khác nhau
  • Ví dụ cho Windows
    • Backslash và chuỗi thô
    • Bộ phân cách đường dẫn trong Windows là Backslash
      print(os.sep)
      # /
      
      print(os.sep is os.path.sep)
      # True
      
      9.
    • Nhận và tham gia một ký tự ổ đĩa:
      print(os.sep)
      # /
      
      print(os.sep is os.path.sep)
      # True
      
      7

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
7 để lấy ký tự ổ đĩa. Mã mẫu dưới đây sử dụng
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
11.

import os

filepath = './dir/subdir/filename.ext'

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
7 phân chia ký tự ổ đĩa bao gồm Đại tá
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
13 và những người khác.

Nếu bạn chỉ muốn nhận được ký tự ổ đĩa, hãy chọn ký tự đầu tiên.

  • Hãy cẩn thận khi tham gia các ký tự ổ đĩa.

Sự khác biệt về phân tách đường dẫn bằng hệ điều hành

Nhận tên tệp (basename) từ một đường dẫn:

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
1

Tên tệp với phần mở rộng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True

Nhận tên tệp (basename) từ một đường dẫn: print(os.sep) # / print(os.sep is os.path.sep) # True 1

Tên tệp với phần mở rộng

Tên tệp với phần mở rộng

Tên tệp mà không cần mở rộng

Lấy tên thư mục (thư mục) từ một đường dẫn:

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2

basename = os.path.basename(filepath)
print(basename)
# filename.ext

print(type(basename))
# 

Tên tệp mà không cần mở rộng

Lấy tên thư mục (thư mục) từ một đường dẫn:

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2

basename_without_ext = os.path.splitext(os.path.basename(filepath))[0]
print(basename_without_ext)
# filename

Nhận cặp tệp và tên thư mục:

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
3

  • Chia chuỗi trong Python (Delimiter, Line Break, Regex, v.v.)

________số 8

Lấy tên thư mục (thư mục) từ một đường dẫn: print(os.sep) # / print(os.sep is os.path.sep) # True 2

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2 để lấy thư mục thư mục (tên) từ chuỗi đường dẫn.

filepath = './dir/subdir/filename.ext'

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
0

Nếu bạn chỉ muốn nhận tên thư mục ngay phía trên tệp, hãy sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
1.

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
1

Nhận cặp tệp và tên thư mục: print(os.sep) # / print(os.sep is os.path.sep) # True 3

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
3 để lấy cả tên tệp và thư mục (thư mục).

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
3 Trả về một bộ tệp được trả về bởi
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
1 và tên thư mục được trả về bởi
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2.

filepath = './dir/subdir/filename.ext'

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
3

Bạn có thể giải nén tuple để gán cho từng biến.

  • Giải nén một tuple và danh sách trong Python

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
4

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6 được mô tả sau để tham gia lại tên tệp và thư mục.

Ghi chú khi chuỗi đường dẫn biểu thị thư mục

Lưu ý rằng nếu chuỗi đường dẫn biểu thị thư mục (thư mục), kết quả sẽ khác nhau tùy thuộc vào việc có dấu phân cách ở cuối hay không.

Không có dấu tách ở cuối:

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
5

Nếu có một dấu phân cách ở cuối, hãy sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2 và
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
1 để lấy tên thư mục dưới cùng.

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
6

Nhận tiện ích mở rộng: print(os.sep) # / print(os.sep is os.path.sep) # True 4

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
4 để có được phần mở rộng.

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
4 chia phần mở rộng và các phần khác và trả lại nó như một tuple. Phần mở rộng chứa dấu chấm
filepath = './dir/subdir/filename.ext'
7.

filepath = './dir/subdir/filename.ext'

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
8

Kết nối với toán tử

basename_without_ext = os.path.splitext(os.path.basename(filepath))[0]
print(basename_without_ext)
# filename
5 trả về chuỗi đường dẫn ban đầu.

  • Chuỗi Concatenate trong Python (+ toán tử, tham gia, v.v.)

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
9

Tạo một chuỗi đường dẫn với một tiện ích mở rộng khác

Để tạo một chuỗi đường dẫn chỉ có phần mở rộng được thay đổi từ bản gốc, hãy nối phần tử đầu tiên của tuple được trả về bởi

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
4 với bất kỳ tiện ích mở rộng nào.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
0

Nhận tiện ích mở rộng mà không có dấu chấm (khoảng thời gian)

Nếu bạn muốn nhận phần mở rộng mà không có dấu chấm (khoảng thời gian)

filepath = './dir/subdir/filename.ext'
7, hãy chỉ định chuỗi thứ hai và tiếp theo với lát
basename_without_ext = os.path.splitext(os.path.basename(filepath))[0]
print(basename_without_ext)
# filename
8.

  • Cách cắt một danh sách, chuỗi, tuple trong Python

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
1

Ví dụ về các trường hợp như print(os.sep) # / print(os.sep is os.path.sep) # True 5

Như được hiển thị trong ví dụ trên,

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
4 chia ở điểm cuối cùng (phải) DOT
filepath = './dir/subdir/filename.ext'
7. Hãy cẩn thận với các phần mở rộng như
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
5.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
2

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
3

Nếu bạn muốn chia theo dấu chấm đầu tiên (trái) trong tên tệp, hãy sử dụng phương thức

filepath = './dir/subdir/filename.ext'
9 của chuỗi, nhưng nó không hoạt động nếu tên thư mục cũng chứa dot
filepath = './dir/subdir/filename.ext'
7.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
4

Sau khi chia tách với

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
3, áp dụng phương pháp
filepath = './dir/subdir/filename.ext'
9 của chuỗi và tham gia với
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6 được mô tả sau.

Chuỗi được trả về bởi

filepath = './dir/subdir/filename.ext'
9 không chứa dấu phân cách, vì vậy hãy cẩn thận nếu bạn muốn nhận tiện ích mở rộng với dấu chấm
filepath = './dir/subdir/filename.ext'
7 như
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
4.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
5

Tạo chuỗi đường dẫn bằng cách kết hợp tên tệp và tên thư mục: print(os.sep) # / print(os.sep is os.path.sep) # True 6

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6 để tham gia tên tệp và thư mục để tạo chuỗi đường dẫn mới.

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
6

Tạo chuỗi đường dẫn cho một tệp khác trong cùng một thư mục

Nếu bạn muốn tạo một chuỗi đường dẫn cho một tệp khác trong cùng một thư mục của một tệp, hãy sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
2 và
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6.

filepath = './dir/subdir/filename.ext'

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
8

Sử dụng các định dạng hệ điều hành khác nhau

Nếu bạn muốn thao tác các chuỗi đường dẫn ở định dạng hệ điều hành không phải là hệ điều hành mà Python hiện đang chạy, nhập và sử dụng các mô -đun khác nhau thay vì mô -đun

filepath = './dir/subdir/filename.ext'
6.

  • UNIX (bao gồm MAC hiện tại):
    filepath = './dir/subdir/filename.ext'
    
    7
  • Windows:
    filepath = './dir/subdir/filename.ext'
    
    8
  • Macintosh 9 và sớm hơn:
    filepath = './dir/subdir/filename.ext'
    
    9

Vì mỗi mô -đun có cùng giao diện với

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
0, bạn có thể thay đổi phần
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
0 của mã mẫu cho đến nay thành tên mô -đun của chúng (như
filepath = './dir/subdir/filename.ext'
8).

Ví dụ cho Windows

Mã mẫu dưới đây đang chạy trên MAC bằng mô -đun

filepath = './dir/subdir/filename.ext'
8 được đề cập ở trên. Khi chạy trên Windows, bạn có thể thay thế
filepath = './dir/subdir/filename.ext'
8 bằng
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
0.

Backslash và chuỗi thô

Bộ phân cách đường dẫn trong Windows là Backslash

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
9.

Để viết dấu gạch chéo ngược trong một chuỗi, bạn cần viết hai dấu gạch chéo ngược để trốn thoát.

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
07 đầu ra một dấu gạch chéo ngược.

  • 2. Phân tích từ vựng - Chuỗi và byte theo nghĩa đen - Python 3.9.1RC1 Tài liệu

>>> import os
>>> os.path.split(os.path.abspath(existGDBPath))
('T:\\Data\\DBDesign', 'DBDesign_93_v141b.mdb')
9

Chuỗi RAW (

>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
08) giúp viết đường dẫn Windows dễ dàng hơn vì bạn có thể viết dấu gạch chéo ngược như nó là. Một chuỗi thô và một chuỗi bình thường có giá trị bằng nhau.

import os

filepath = './dir/subdir/filename.ext'
0

Để biết thêm thông tin về chuỗi thô, xem bài viết sau.

  • Dây thô trong Python

Ví dụ về nhận tên tệp, tên thư mục, tiện ích mở rộng

Nó cũng hoạt động trên Windows.

import os

filepath = './dir/subdir/filename.ext'
1

Nhận và tham gia một ký tự ổ đĩa: print(os.sep) # / print(os.sep is os.path.sep) # True 7

Sử dụng

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
7 để lấy ký tự ổ đĩa. Mã mẫu dưới đây sử dụng
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
11.

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
7 phân chia ký tự ổ đĩa bao gồm Đại tá
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
13 và những người khác.

import os

filepath = './dir/subdir/filename.ext'
2

Nếu bạn chỉ muốn nhận được ký tự ổ đĩa, hãy chọn ký tự đầu tiên.

import os

filepath = './dir/subdir/filename.ext'
3

Hãy cẩn thận khi tham gia các ký tự ổ đĩa.

Nếu bạn chuyển nó cho

print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6 như nó là, nó sẽ không hoạt động.

import os

filepath = './dir/subdir/filename.ext'
4

Bạn cũng có thể chỉ định

filepath = './dir/subdir/filename.ext'
0 (
>>> import os
>>> os.path.dirname(os.path.abspath(existGDBPath))
'T:\\Data\\DBDesign'
16 trong mã mẫu) trong đối số của
print(os.sep)
# /

print(os.sep is os.path.sep)
# True
6 hoặc thêm một dấu tách vào ký tự ổ đĩa.

import os

filepath = './dir/subdir/filename.ext'
5