Hướng dẫn python get current file name - python lấy tên tệp hiện tại

Tất cả những câu trả lời đó là tuyệt vời, nhưng có một số vấn đề bạn có thể không thấy ngay từ cái nhìn đầu tiên.

Hãy xác định những gì chúng tôi muốn - chúng tôi muốn tên của tập lệnh được thực thi, không phải tên của mô -đun hiện tại - vì vậy __file__ sẽ chỉ hoạt động nếu nó được sử dụng trong tập lệnh được thực thi, không phải trong mô -đun nhập. sys.argv cũng là nghi vấn - điều gì sẽ xảy ra nếu chương trình của bạn được gọi bởi pytest thì sao? Hay người chạy Pydoc? Hoặc nếu nó được gọi bởi UWSGI?

Và - có một phương pháp thứ ba để lấy tên tập lệnh, tôi không thấy trong các câu trả lời - bạn có thể kiểm tra ngăn xếp.

Một vấn đề khác là, bạn (hoặc một số chương trình khác) có thể làm xáo trộn xung quanh với sys.argv__main__.__file__ - nó có thể có mặt, nó có thể không. Nó có thể hợp lệ, hoặc không. Ít nhất bạn có thể kiểm tra xem tập lệnh (kết quả mong muốn) có tồn tại không!

Thư viện lib_programname thực hiện chính xác điều đó:

  • Kiểm tra xem
    # Option 1: Works for Python 3.4 +
    from pathlib import Path
    Path(__file__).name		# ScriptName.py
    Path(__file__).stem		# ScriptName
    
    # Option 2: use `os` library 
    import os
    os.path.basename(__file__)							# ScriptName.py
    os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
    0 có mặt không
  • Kiểm tra xem __main__.__file__ có mặt không
  • Có cho __main__.__file__ kết quả hợp lệ không (tập lệnh đó có tồn tại không?)
  • Nếu không: kiểm tra sys.argv:
  • Có pytest, docrunner, vv trong sys.argv? -> Nếu có, hãy bỏ qua điều đó
  • Chúng ta có thể nhận được một kết quả hợp lệ ở đây không?
  • Nếu không: kiểm tra ngăn xếp và nhận kết quả từ đó có thể
  • Nếu cả ngăn xếp không cho kết quả hợp lệ, thì hãy ném một ngoại lệ.

Bằng cách đó, giải pháp của tôi đang hoạt động cho đến nay với

# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
3,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
4,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
5,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
6,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
7,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
8,
# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
9

Ngoài ra còn có một bài viết trên blog hay về vấn đề đó từ Dough Hellman, "Xác định tên của một quá trình từ Python"

BTW, nó sẽ thay đổi một lần nữa trong Python 3.9: Thuộc tính tệp của mô -đun chính trở thành một đường dẫn tuyệt đối, thay vì một đường dẫn tương đối. Các đường dẫn này hiện vẫn còn hiệu lực sau khi thư mục hiện tại được thay đổi bởi os.chdir ()file attribute of the main module became an absolute path, rather than a relative path. These paths now remain valid after the current directory is changed by os.chdir()

Vì vậy, tôi muốn chăm sóc một mô -đun nhỏ, thay vì lướt qua cơ sở mã của mình nếu nó nên được thay đổi một số ...


Tuyên bố miễn trừ trách nhiệm: Tôi là tác giả của Thư viện Lib_ProgramName.

Nhận tên tệp hiện tại Python với các ví dụ mã

Xin chào tất cả mọi người, trong bài đăng này, chúng tôi sẽ xem xét cách giải quyết vấn đề Python tên tệp hiện tại bằng ngôn ngữ máy tính.

import os
os.path.dirname(os.path.abspath(__file__))

Các cách khác để tìm giải pháp để có được tên tệp hiện tại Python được hiển thị bên dưới.

# Option 1: Works for Python 3.4 +
from pathlib import Path
Path(__file__).name		# ScriptName.py
Path(__file__).stem		# ScriptName

# Option 2: use `os` library 
import os
os.path.basename(__file__)							# ScriptName.py
os.path.splitext(os.path.basename(__file__))[0]		# ScriptName
import os
os.path.basename(__file__)
from pathlib import Path
print(Path(__file__).stem) #myfile
print(Path(__file__).name) #myfile.py
import os

os.path.basename(__file__)
print(__file__)

Như chúng tôi đã thấy, rất nhiều ví dụ đã được sử dụng để giải quyết vấn đề Python tên tệp hiện tại.

Làm thế nào để tôi có được tên tệp hiện tại trong Python?

Chương trình Python để lấy tên tệp từ đường dẫn tệp

  • Nhập hệ điều hành # Tên tệp với phần mở rộng file_name = os.path.basename ('/root/file.ext') # Tên tệp không có phần mở rộng in (os.path.splitext (file_name) [0]) chạy mã.
  • Nhập bản in hệ điều hành (Os.Path.SpliteXt (File_Name))
  • Từ pathlib nhập đường dẫn in (đường dẫn ('/root/file.ext').

Làm cách nào để có được đường dẫn tệp hiện tại trong Python?

Để có được thư mục làm việc hiện tại trong Python, hãy sử dụng phương thức Os.getCwd (). Hàm này của mô -đun HĐH Python trả về chuỗi chứa đường dẫn tuyệt đối đến thư mục làm việc hiện tại.

Làm cách nào để nhận tên tệp?

Phương thức getName () là một phần của lớp tệp. Hàm này trả về tên của đối tượng tệp đã cho. Hàm trả về một đối tượng chuỗi chứa tên của đối tượng tệp đã cho.

__ Tên __ trong Python là gì?

Biến __name__ (hai dấu gạch dưới và sau) là một biến Python đặc biệt. Nó nhận được giá trị của nó tùy thuộc vào cách chúng tôi thực thi tập lệnh chứa. Đôi khi bạn viết một tập lệnh với các chức năng cũng có thể hữu ích trong các tập lệnh khác. Trong Python, bạn có thể nhập tập lệnh đó dưới dạng mô -đun trong một tập lệnh khác.

Nhận tên tệp hiện tại Python với các ví dụ mã

Xin chào tất cả mọi người, trong bài đăng này, chúng tôi sẽ xem xét cách giải quyết vấn đề Python tên tệp hiện tại bằng ngôn ngữ máy tính.

Các cách khác để tìm giải pháp để có được tên tệp hiện tại Python được hiển thị bên dưới.

Như chúng tôi đã thấy, rất nhiều ví dụ đã được sử dụng để giải quyết vấn đề Python tên tệp hiện tại.

  • Chương trình Python để lấy tên tệp từ đường dẫn tệp
  • Parameter:
  • Nhập hệ điều hành # Tên tệp với phần mở rộng file_name = os.path.basename ('/root/file.ext') # Tên tệp không có phần mở rộng in (os.path.splitext (file_name) [0]) chạy mã.
  • Nhập bản in hệ điều hành (Os.Path.SpliteXt (File_Name))

Từ pathlib nhập đường dẫn in (đường dẫn ('/root/file.ext').

Để có được thư mục làm việc hiện tại trong Python, hãy sử dụng HĐH. phương thức getcwd (). Chức năng này của mô-đun HĐH Python trả về chuỗi chứa đường dẫn tuyệt đối đến thư mục làm việc hiện tại.14-JUL-2022

__ Tệp __ Python là gì?

Biến __file__: __file__ là một biến chứa đường dẫn đến mô -đun hiện đang được nhập. Python tạo ra một biến __file__ cho chính nó khi nó sắp nhập một mô-đun.08-Aug-2021

Làm cách nào để nhận tên tệp mà không có phần mở rộng trong Python?

Nhận tên tệp từ đường dẫn mà không cần mở rộng bằng phương thức rsplit () python chuỗi rsplit () trả về danh sách các chuỗi sau khi phá chuỗi đã cho từ phía bên phải bởi bộ phân cách được chỉ định.14-sept-2022

Làm cách nào để có được đường dẫn của một tập tin?

Nhấp vào nút Bắt đầu và sau đó nhấp vào Máy tính, nhấp để mở vị trí của tệp mong muốn, giữ phím Shift và nhấp chuột phải vào tệp. Sao chép dưới dạng đường dẫn: Nhấp vào tùy chọn này để dán đường dẫn tệp đầy đủ vào tài liệu. Thuộc tính: Nhấp vào tùy chọn này để xem ngay đường dẫn tệp (vị trí) .23-JUL-2019

Làm thế nào để tôi có được tên tệp hiện tại trong Python?

Chương trình Python để lấy tên tệp từ đường dẫn tệp..
Nhập hệ điều hành # Tên tệp với phần mở rộng file_name = os.path.basename ('/root/file.ext') # Tên tệp không có phần mở rộng in (os.path.splitext (file_name) [0]) Chạy mã ..
Nhập bản in hệ điều hành (Os.Path.SpliteXt (File_Name)) ....
từ Pathlib Nhập đường dẫn PRINT (đường dẫn ('/root/file.ext'). Thân cây).

Làm cách nào để có được đường dẫn tệp hiện tại trong Python?

Để có được thư mục làm việc hiện tại trong Python, hãy sử dụng phương thức Os.getCwd ().Hàm này của mô -đun HĐH Python trả về chuỗi chứa đường dẫn tuyệt đối đến thư mục làm việc hiện tại.use the os. getcwd() method. This function of the Python OS module returns the string containing the absolute path to the current working directory.

Làm cách nào để nhận tên tệp?

Phương thức getName () là một phần của lớp tệp.Hàm này trả về tên của đối tượng tệp đã cho.Hàm trả về một đối tượng chuỗi chứa tên của đối tượng tệp đã cho.getName() method is a part of File class. This function returns the Name of the given file object. The function returns a string object which contains the Name of the given file object.

__ Tên __ trong Python là gì?

Biến __name__ (hai dấu gạch dưới và sau) là một biến Python đặc biệt.Nó nhận được giá trị của nó tùy thuộc vào cách chúng tôi thực thi tập lệnh chứa.Đôi khi bạn viết một tập lệnh với các chức năng cũng có thể hữu ích trong các tập lệnh khác.Trong Python, bạn có thể nhập tập lệnh đó dưới dạng mô -đun trong một tập lệnh khác.a special Python variable. It gets its value depending on how we execute the containing script. Sometimes you write a script with functions that might be useful in other scripts as well. In Python, you can import that script as a module in another script.