Python tự động hoàn thành từ thư mục [trùng lặp]

Aug 26 2020

Gần đây, tôi đã chơi với python và đã xây dựng một tệp python đọc từ các tệp trong một thư mục cụ thể. Tệp cụ thể mà nó sẽ đọc được chuyển vào từ dòng lệnh:

import sys
DIR = /path/to/files
with open(DIR + sys.argv[1]) as fil:
    print(fil.readlines())

# python testPy.py fileName
# >>> prints contents of file

Tôi tò mò nếu có cách nào tôi có thể điền tên các tệp vào DIR

Trả lời

Ajordat Aug 26 2020 at 05:35

Nó không trực tiếp là một chức năng tự động hoàn thành, nhưng bạn có thể liệt kê tất cả nội dung trên thư mục và tìm kiếm tất cả các tệp / thư mục bắt đầu bằng đầu vào do người dùng cung cấp. Bằng cách này nếu chỉ tìm thấy một giá trị duy nhất, đó là khả năng duy nhất và bạn sẽ tìm thấy tệp được nhắm mục tiêu.

Mã phải giống như sau:

import os

DIR = "/path/to/files"
content = os.listdir(DIR)
filename = sys.argv[1]

candidates = [path for path in content if path.startswith(filename)]

if len(candidates) == 1:
    print(os.path.join(DIR, candidates[0]))
elif len(candidates) > 1:
    print(f"Multiple options: {candidates}")
else:
    print(f"There are no files starting with '{filename}'")