Hướng dẫn how do i find a file in python? - làm cách nào để tìm một tệp trong python?

Câu trả lời của @F.M.F có một vài vấn đề trong phiên bản này, vì vậy tôi đã thực hiện một vài điều chỉnh để làm cho nó hoạt động.

import os
from os import scandir
import ctypes

def is_sym_link[path]:
    # //stackoverflow.com/a/35915819
    FILE_ATTRIBUTE_REPARSE_POINT = 0x0400
    return os.path.isdir[path] and [ctypes.windll.kernel32.GetFileAttributesW[str[path]] & FILE_ATTRIBUTE_REPARSE_POINT]

def find[base, filenames]:
    hits = []

    def find_in_dir_subdir[direc]:
        content = scandir[direc]
        for entry in content:
            if entry.name in filenames:
                hits.append[os.path.join[direc, entry.name]]

            elif entry.is_dir[] and not is_sym_link[os.path.join[direc, entry.name]]:
                try:
                    find_in_dir_subdir[os.path.join[direc, entry.name]]
                except UnicodeDecodeError:
                    print["Could not resolve " + os.path.join[direc, entry.name]]
                    continue
                except PermissionError:
                    print["Skipped " + os.path.join[direc, entry.name] + ". I lacked permission to navigate"]
                    continue

    if not os.path.exists[base]:
        return
    else:
        find_in_dir_subdir[base]

    return hits

unicode [] đã được thay đổi thành str [] trong python 3, vì vậy tôi đã thực hiện điều chỉnh đó [dòng 8]

Tôi cũng đã thêm [trong dòng 25] và ngoại lệ cho PernessError. Bằng cách này, chương trình sẽ không dừng lại nếu tìm thấy một thư mục mà nó không thể truy cập.

Cuối cùng, tôi muốn đưa ra một cảnh báo nhỏ. Khi chạy chương trình, ngay cả khi bạn đang tìm kiếm một tệp/thư mục duy nhất, hãy đảm bảo bạn chuyển nó dưới dạng danh sách. Nếu không, bạn sẽ nhận được rất nhiều câu trả lời không nhất thiết phải phù hợp với tìm kiếm của bạn.

Ví dụ về việc sử dụng:

Tìm ["C: \", ["Python", "bài tập về nhà"]]

hoặc

Tìm ["C: \\", ["Bài tập về nhà"]]

Nhưng, ví dụ: Tìm ["C: \\", "bài tập về nhà"] sẽ đưa ra câu trả lời không muốn.

Tôi sẽ nói dối nếu tôi nói tôi biết tại sao điều này xảy ra. Một lần nữa, đây không phải là mã của tôi và tôi chỉ thực hiện các điều chỉnh tôi cần để làm cho nó hoạt động. Tất cả tín dụng nên được chuyển đến @f.m.f.

#open và đọc tệp sau khi thêm: f = open ["demofile3.txt", "r"] in [f.Read []]

Lưu ý: Phương thức "W" sẽ ghi đè lên toàn bộ tệp.

demofile.txt

Tạo một tệp mới
This file is for testing purposes.
Good Luck!

Để tạo một tệp mới trong Python, hãy sử dụng phương thức open[], với một trong các tham số sau:

open[]1 - Tạo - sẽ tạo tệp, trả về lỗi nếu tệp tồn tại

Thí dụ

"a" - Phụ lục - sẽ tạo tệp nếu tệp được chỉ định không tồn tại
print[f.read[]]

Chạy ví dụ »

"w" - Viết - sẽ tạo tệp nếu tệp được chỉ định không tồn tại

Thí dụ

Tạo một tệp có tên là "myfile.txt":

f = open ["myfile.txt", "x"]
print[f.read[]]

Chạy ví dụ »

Kết quả: Một tệp trống mới được tạo!

Tạo một tệp mới nếu nó không tồn tại:

Thí dụ

f = open ["myfile.txt", "w"]

Mở tệp trên máy chủ
print[f.read[5]]

Chạy ví dụ »

Giả sử chúng ta có tệp sau, nằm trong cùng thư mục với Python:

Xin chào! Chào mừng bạn đến với demofile.txtthis là nhằm mục đích thử nghiệm. Chúc may mắn!

Thí dụ

Để mở tệp, sử dụng chức năng open[] tích hợp.

Hàm open[] trả về một đối tượng tệp, có phương thức read[] để đọc nội dung của tệp:
print[f.readline[]]

Chạy ví dụ »

f = open ["demofile.txt", "r"] in [f.Read []]

Thí dụ

Nếu tệp được đặt ở một vị trí khác, bạn sẽ phải chỉ định đường dẫn tệp, như thế này:

Mở tệp trên một vị trí khác:
print[f.readline[]]
print[f.readline[]]

Chạy ví dụ »

f = open ["d: \\ myfiles \ welcome.txt", "r"] in [f.Read []]

Thí dụ

Chỉ đọc các phần của tệp

Theo mặc định, phương thức read[] trả về toàn bộ văn bản, nhưng bạn cũng có thể chỉ định số lượng ký tự bạn muốn trả về:
for x in f:
  print[x]

Chạy ví dụ »

Trả về 5 ký tự đầu tiên của tệp:

f = open ["demofile.txt", "r"] in [f.Read [5]]

Thí dụ

Đọc dòng

Bạn có thể trả về một dòng bằng cách sử dụng phương thức readline[]:
print[f.readline[]]
f.close[]

Chạy ví dụ »

Đọc một dòng của tệp: You should always close your files, in some cases, due to buffering, changes made to a file may not show until you close the file.


Kết quả: Một tệp trống mới được tạo!

Tạo một tệp mới nếu nó không tồn tại:

f = open ["myfile.txt", "w"]

Ghi vào một tệp hiện có

Thí dụ

Tạo một tệp có tên là "myfile.txt":

f = open ["myfile.txt", "x"]
f.write["Now the file has more content!"]
f.close[]

Kết quả: Một tệp trống mới được tạo!
f = open["demofile2.txt", "r"]
print[f.read[]]

Chạy ví dụ »

Thí dụ

Tạo một tệp có tên là "myfile.txt":

f = open ["demofile3.txt", "w"] f.write ["woops! Tôi đã xóa nội dung!"] f.close []
f.write["Woops! I have deleted the content!"]
f.close[]

#open và đọc tệp sau khi thêm: f = open ["demofile3.txt", "r"] in [f.Read []]
f = open["demofile3.txt", "r"]
print[f.read[]]

Chạy ví dụ »

Lưu ý: Phương thức "W" sẽ ghi đè lên toàn bộ tệp. the "w" method will overwrite the entire file.

Tạo một tệp mới

Để tạo một tệp mới trong Python, hãy sử dụng phương thức open[], với một trong các tham số sau:

open[]1 - Tạo - sẽ tạo tệp, trả về lỗi nếu tệp tồn tại

"a" - Phụ lục - sẽ tạo tệp nếu tệp được chỉ định không tồn tại

"w" - Viết - sẽ tạo tệp nếu tệp được chỉ định không tồn tại

Thí dụ

Tạo một tệp có tên là "myfile.txt":

f = open ["myfile.txt", "x"]

Kết quả: Một tệp trống mới được tạo!

Thí dụ

Tạo một tệp có tên là "myfile.txt":

f = open ["myfile.txt", "x"]


Bài Viết Liên Quan

Chủ Đề