Python kiểm tra xem tệp có ở chế độ chỉ đọc không

Các tệp Windows chỉ đọc với Python

Bạn sử dụng Python như thế nào để nhận hoặc thay đổi quyền truy cập chỉ đọc/có thể ghi trên các tệp trong Windows? . Đây là một tùy chọn chỉ sử dụng thư viện tiêu chuẩn

import os, stat
myFile = r'C:\stuff\grail.txt'

fileAtt = os.stat[myFile][0]
if [not fileAtt & stat.S_IWRITE]:
   # File is read-only, so make it writeable
   os.chmod[myFile, stat.S_IWRITE]
else:
   # File is writeable, so make it read-only
   os.chmod[myFile, stat.S_IREAD]
Bạn có thể thích các tiện ích mở rộng pywin32 cho loại điều này
import win32api, win32con
myFile = r'C:\stuff\grail.txt'

fileAtt = win32api.GetFileAttributes[myFile]
if [fileAtt & win32con.FILE_ATTRIBUTE_READONLY]:
   # File is read-only, so make it writeable
   win32api.SetFileAttributes[myFile, ~win32con.FILE_ATTRIBUTE_READONLY]
else:
   # File is writeable, so make it read-only
   win32api.SetFileAttributes[myFile, win32con.FILE_ATTRIBUTE_READONLY]
Hoặc ngắn gọn hơn với win32
roAtt = win32api.GetFileAttributes[myFile] & win32con.FILE_ATTRIBUTE_READONLY
win32api.SetFileAttributes[myFile, ~roAtt]
Sử dụng win32, bạn cũng có thể đặt các thuộc tính tệp Windows khác [không giống như os. chmod ], nhưng đọc/ghi thường là tất cả những gì tôi quan tâm.

đăng 8. 29AM

nhãn. con trăn

Trong hướng dẫn ngắn này, chúng ta xem xét cách kiểm tra xem tệp có tồn tại trong Python không. Chúng tôi xem xét lý do tại sao việc kiểm tra sự tồn tại của tệp trước khi thực hiện bất kỳ thao tác nào trên chúng lại quan trọng và các phương pháp khác nhau được sử dụng để xác nhận xem tệp có tồn tại trong Python hay không.

Mục lục - Python kiểm tra xem tệp có tồn tại không

  1. Tại sao chúng ta cần kiểm tra xem một tệp có tồn tại không?
  2. Các phương pháp kiểm tra xem tệp có tồn tại không
    • Sử dụng mô-đun hệ điều hành
      • hệ điều hành. đường dẫn. phương thức isfile[]
      • hệ điều hành. đường dẫn. phương thức tồn tại[]
      • hệ điều hành. đường dẫn. phương thức isdir[]
    • Sử dụng mô-đun pathlib
      • đường dẫn. đường dẫn. phương thức tồn tại[]
      • đường dẫn. phương thức is_file[]
    • Sử dụng mô-đun Glob
    • Sử dụng quy trình phụ [chỉ dành cho Unix]
    • Phương pháp xử lý ngoại lệ
  3. Bớt tư tưởng

Tại sao chúng ta cần kiểm tra xem một tệp có tồn tại không?

Chúng ta có thể thực hiện các thao tác khác nhau trong Python. Sau khi tạo tệp, chúng ta có thể thực hiện các thao tác trên tệp để đọc, cập nhật, sao chép hoặc thậm chí xóa chúng. Nếu chúng tôi viết mã để thực hiện bất kỳ thao tác nào trong số này trên một tệp và tệp không tồn tại, thì chúng tôi sẽ cần ghi đè mã sau khi đảm bảo rằng tệp tồn tại ở đường dẫn đã xác định

Vì vậy, để thực hiện các chức năng trên một tệp và ngăn chương trình của chúng tôi bị lỗi, trước tiên chúng tôi cần đảm bảo rằng tệp đó tồn tại

Có nhiều phương pháp khác nhau để làm điều này. Chúng ta có thể sử dụng các thư viện Python hoặc có thể sử dụng các phương thức khác cho cùng một. Chúng ta hãy xem xét từng cái một

Các phương pháp kiểm tra xem tệp có tồn tại không

Sử dụng mô-đun os

Os là một mô-đun Python tích hợp có chứa các chức năng để tương tác với hệ điều hành. Sử dụng os cho phép chúng tôi truy cập các chức năng của hệ điều hành. hệ điều hành. đường dẫn là một mô-đun con của os trong Python. Điều này được sử dụng để thao tác tên đường dẫn chung

hệ điều hành. đường dẫn có hai phương thức- isfile [] và tồn tại [] xuất ra 'True' hoặc 'False' tùy thuộc vào việc tệp có tồn tại hay không

hệ điều hành. đường dẫn. phương thức isfile[]-

Kiểm tra xem đường dẫn đã xác định có phải là tệp thông thường hiện có hay không

Cú pháp như sau

os.path.isfile[path]
Tham số- Đường dẫn. đại diện cho đường dẫn đến tập tin
Loại trả về. 'Đúng' hoặc 'Sai' tùy thuộc vào việc tệp có tồn tại hay không. Ví dụ-
import os

path= 'C:\Users\filename.txt'

isFile = os.path.isfile[path]

print [isFile]

Nếu tệp có tên 'filename. txt', đầu ra sẽ là 'True', nếu không thì 'Sai'.

hệ điều hành. đường dẫn. phương thức tồn tại[]-

Kiểm tra xem đường dẫn đã xác định có tồn tại không

Cú pháp như sau

os.path.exists[path]
Tham số- Đường dẫn. đại diện cho đường dẫn đến tập tin
Loại trả về. 'Đúng' hoặc 'Sai' tùy thuộc vào việc tệp có tồn tại hay không. Ví dụ-
import os

path= 'C:\Users\filename.txt'

isExist = os.path.exists[path]

print[isExist]

Nếu tệp có tên 'filename. txt', đầu ra sẽ là 'True', nếu không thì 'Sai'.

hệ điều hành. đường dẫn. phương thức isdir[]-

Kiểm tra xem đường dẫn đã xác định có phải là thư mục hiện có không

Cú pháp như sau

os.path.isdir[path]
Thông số- Đường dẫn. đại diện cho đường dẫn đến tập tin
loại trả lại. 'True' hoặc 'False' tùy thuộc vào việc tệp có tồn tại hay không. Ví dụ-
import os.path

path= 'C:\Users\filename.txt'

isDir = os.path.exists[path]

print[isDir]
Ở đây, vì tệp của chúng tôi không phải là một thư mục, chúng tôi sẽ nhận được kết quả là "Sai"

Lưu ý rằng trước khi sử dụng hệ điều hành. đường dẫn. phương thức isfile[], hệ điều hành. đường dẫn. phương thức tồn tại [] hoặc hệ điều hành. đường dẫn. phương thức isdir[], hệ điều hành. mô-đun đường dẫn nên được nhập khẩu

Sử dụng mô-đun pathlib

Pathlib là giao diện hướng đối tượng tích hợp sẵn của python, cung cấp API đối tượng để làm việc với các tệp và thư mục. Giống như mô-đun os, có hai cách để tìm xem mô-đun có tồn tại hay không bằng cách sử dụng mô-đun pathlib

đường dẫn. đường dẫn. phương thức tồn tại[]

Ví dụ-
import pathlib

file = pathlib.Path["C:/Users/filename.txt"]

if file.exists[]:
    print ["File exist"]
else:
    print ["File does not exist"]

đường dẫn. Phương thức is_file[]

Ví dụ-
import pathlib

file = pathlib.Path["C:/Users/filename.txt"]

if file.is_file[]:
    print ["File exist"]
else:
    print ["File does not exist"]

Sự khác biệt giữa mô-đun os và mô-đun pathlib là mô-đun os. mô-đun đường dẫn cần lồng hàm, trong khi các mô-đun pathlib Lớp đường dẫn cho phép chúng ta xâu chuỗi các phương thức và thuộc tính trên các đối tượng Đường dẫn để có được biểu diễn đường dẫn tương đương. Mô-đun pathlib có các chức năng tương tự như mô-đun os để tìm xem tệp có tồn tại không.

Sử dụng mô-đun Glob

Mô-đun toàn cầu được sử dụng để tìm kiếm các tệp trong đó tên tệp khớp với một mẫu nhất định bằng cách sử dụng các ký tự đại diện. Điều này cũng trả về các giá trị "Đúng" hoặc "Sai" để cho biết tệp có tồn tại hay không
Ví dụ-
import glob

if glob.glob[r"C:\Users\filename.txt"]:
  print ["File exist"]
  
else:
  print["File does not exist"]

Sử dụng quy trình phụ [chỉ dành cho Unix]

Nếu bạn đang sử dụng máy dựa trên Unix, phương pháp này có thể áp dụng cho bạn. Có các lệnh kiểm tra trong mô-đun quy trình con có thể được sử dụng để tìm xem tệp hoặc thư mục có tồn tại hay không
Bước đầu tiên là đảm bảo rằng đường dẫn đến tệp/thư mục tồn tại, sử dụng "test -e". Nếu đường dẫn tồn tại, thì chúng tôi sẽ kiểm tra sự tồn tại của tệp/thư mục bằng cách sử dụng "test -f" hoặc "test -d" tương ứng
from subprocess import run

run [['test', '-e', 'filename.txt']].returncode == 0
Nếu đầu ra là "True", thì chúng tôi sẽ kiểm tra tệp
import os

path= 'C:\Users\filename.txt'

isFile = os.path.isfile[path]

print [isFile]
0

Phương pháp xử lý ngoại lệ

Trong câu lệnh thử và ngoại trừ, chúng tôi có mã được viết dưới "thử" và câu lệnh "ngoại trừ" kiểm tra lỗi mã trong "thử". Nếu có bất kỳ lỗi nào, khối "ngoại trừ" sẽ được chạy. Do đó, chúng tôi kiểm tra xem tệp có tồn tại hay không bằng cách mở tệp bằng câu lệnh "try". Nếu tệp không có, IOError Exception xảy ra, chúng tôi có thể in đầu ra để cho biết tệp không tồn tại
Bước đầu tiên là đảm bảo rằng đường dẫn đến tệp/thư mục tồn tại, sử dụng "test -e". Nếu đường dẫn tồn tại, thì chúng tôi sẽ kiểm tra sự tồn tại của tệp/thư mục bằng cách sử dụng "test -f" hoặc "test -d" tương ứng
Ví dụ-
import os

path= 'C:\Users\filename.txt'

isFile = os.path.isfile[path]

print [isFile]
1Một cách khác để sử dụng phương pháp thử và ngoại trừ được trình bày trong ví dụ bên dưới. Ở đây, nếu chúng ta cố mở một tệp không tồn tại, Python sẽ báo lỗi FileNotFoundError
import os

path= 'C:\Users\filename.txt'

isFile = os.path.isfile[path]

print [isFile]
2

Trong cả hai trường hợp, đầu ra sẽ là "Tệp tồn tại" hoặc "Tệp không tồn tại" tùy thuộc vào việc tệp có tồn tại hay không

Bớt tư tưởng

Trước khi thực hiện bất kỳ thao tác nào trên tệp, bạn nên kiểm tra xem tệp có tồn tại hay không. Điều này sẽ tránh ghi đè mã trong trường hợp không có tệp. Ở đây, chúng ta đã thấy nhiều phương pháp khác nhau để kiểm tra xem tệp có tồn tại hay không

Phương pháp đầu tiên trong số đó thường được sử dụng và có thể được khuyến nghị cho người mới bắt đầu. Khi các thư viện không được sử dụng, chúng ta có thể sử dụng phương thức thử và ngoại trừ hoặc phương thức xử lý ngoại lệ

Chủ Đề