Tại sao python nói tệp của tôi không tồn tại?

Bạn có thể dùng nhiều cách để tạo file nếu chưa có. Cách phổ biến nhất là sử dụng hàm open[] và chuyển các chế độ khác nhau theo yêu cầu của bạn. Các cách khác là sử dụng mô-đun pathlib hoặc mô-đun os và kiểm tra tình trạng hiện có của tệp. Trong hướng dẫn này, chúng ta sẽ sử dụng cách tiếp cận của phương thức open[] và cách tiếp cận của mô-đun pathlib

Python tạo tệp nếu không tồn tại

Để tạo một tệp nếu không tồn tại trong Python, hãy sử dụng hàm open[]. open[] là một hàm Python tích hợp để mở tệp và trả về dưới dạng đối tượng tệp. open[] lấy đường dẫn tệp và chế độ làm đầu vào và trả về đối tượng tệp làm đầu ra

Cú pháp mở[]

open[file, mode]

Tranh luận

tập tin. Nó là đường dẫn và tên của một tập tin

cách thức. Hàm open[] nhận một trong các chế độ sau

  1. w. Nó dành cho chế độ ghi
  2. r. Nó dành cho chế độ đọc
  3. a. Nó dành cho chế độ chắp thêm
  4. w+. Tạo tệp nếu nó không tồn tại và sau đó mở nó ở chế độ ghi
  5. r+. Mở tệp ở chế độ đọc và ghi
  6. một +. Tạo tệp nếu nó không tồn tại và mở nó ở chế độ chắp thêm

Đây là các chế độ khác nhau mà bạn có thể sử dụng khi tạo tệp mới

Nếu bạn vượt qua +, hãy thêm văn bản vào tệp hoặc tạo trước nếu nó không tồn tại

Chế độ w+ sẽ cắt bớt tệp rồi mở tệp ở chế độ ghi, vì vậy nếu chúng ta không muốn cắt bớt tệp thì nên sử dụng chế độ a+

file = open['data.py','a+']

Nếu bạn chạy đoạn mã trên, nó sẽ tạo một tệp có tên data. py. Tệp không tồn tại trước đó nhưng nó đã được tạo sau khi chúng tôi chạy mã. Nếu tệp tồn tại và đã có nội dung thì dấu + sẽ không xóa nội dung

Để cắt bớt tệp trong khi tạo tệp mới, hãy sử dụng chế độ w+ trong hàm open[]

Chúng tôi viết một số mã bên trong dữ liệu. py và sau đó chạy ứng dụng. tệp py với chế độ w+

file = open['data.py','w+']

Nếu bạn chạy đoạn mã trên, nó sẽ cắt bớt tệp

w cắt bớt tập tin hiện có. tài liệu. Các chế độ 'r+', 'w+' và 'a+' mở tệp để cập nhật

Một điều cần lưu ý là a+ tạo một tệp nếu nó không tồn tại và điều quan trọng là tìm kiếm tệp đến cùng. Vì vậy, nếu bạn đọc ngay sau khi mở theo cách này, bạn sẽ không nhận được gì

Tạo tệp nếu nó không tồn tại bằng touch[]

Có một cách khác để tạo tệp nếu tệp không tồn tại bằng cách sử dụng phương thức touch[] của mô-đun pathlib. Đường dẫn. phương thức touch[] tạo tệp tại đường dẫn đã chỉ định.

from pathlib import Path

fle = Path['data.py']
fle.touch[exist_ok=True]
f = open[fle]

Nếu tệp đã tồn tại, thì nó sẽ không làm gì cả. Nếu không, nó sẽ tạo một tệp mới

Đó là nó cho hướng dẫn này

Xem thêm

Đọc tệp Python

Python grep

Xử lý tệp Python

Facebook

Twitter

Pinterest

WhatsApp

Bài viết trước Đẩy mảng PHP. Cách thêm phần tử vào mảng

Bài viết tiếp theo Danh sách Python thay thế. Cách thay thế chuỗi, số nguyên trong Danh sách

kranal

https. //appdividend. com/

Krunal Lathiya là một kỹ sư công nghệ thông tin. Theo chuyên môn, anh ấy là một nhà phát triển web có kiến ​​thức về nhiều nền tảng back-end [e. g. , PHP, Nút. js, Python] và các khung JavaScript giao diện người dùng [e. g. , Góc, Phản ứng và Vue]

Hãy đi thẳng vào một ví dụ mã. Giả sử bạn có một tệp có tên ví dụ. txt trong thư mục hiện tại. Nếu không, chỉ cần tạo một cái, sau đó tô nó bằng những dòng này và lưu nó

hello world
and now
I say
goodbye

Đây là một đoạn mã Python ngắn để mở tệp đó và in nội dung của nó ra màn hình – lưu ý rằng mã Python này phải được chạy trong cùng thư mục chứa tệp

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
1 trong đó

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]

Điều đó có vẻ quá phức tạp?

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]

Đây là cách đọc tệp đó, từng dòng một, sử dụng vòng lặp for

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]

[Ghi chú. Nếu bạn đã nhận được FileNotFoundError – điều đó hầu như được mong đợi. Hãy đọc tiếp. ]

Vẫn có vẻ quá phức tạp? . Không chỉ vậy, chúng tôi còn phải đóng tệp theo cách thủ công

Bây giờ chúng ta hãy thực hiện từng bước này

Để mở một tệp, chúng tôi chỉ cần sử dụng phương thức

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
2 và chuyển vào, làm đối số đầu tiên, tên tệp

file = open['data.py','a+']
0

Điều đó có vẻ dễ dàng, vì vậy hãy chuyển sang một số lỗi phổ biến

Cách lộn xộn khi mở tệp

Đây có thể là lỗi phổ biến nhất mà bạn sẽ gặp phải khi cố mở một tệp

file = open['data.py','a+']
1

Trên thực tế, tôi đã thấy các sinh viên lãng phí hàng chục giờ để cố vượt qua thông báo lỗi này, bởi vì họ không dừng lại để đọc nó. Vì vậy, đọc nó.

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
3 nghĩa là gì?

Hãy thử đặt dấu cách nơi viết hoa xảy ra

file = open['data.py','a+']
3

Bạn sẽ gặp lỗi này vì bạn đã cố mở một tệp đơn giản là không tồn tại. Đôi khi, đó là một lỗi đánh máy đơn giản, cố gắng

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
2 một tệp có tên
myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
5 nhưng lại vô tình viết sai chính tả thành
myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
6

Nhưng thường xuyên hơn, đó là vì bạn biết một tệp tồn tại dưới một tên tệp nhất định, chẳng hạn như

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
5 – nhưng làm thế nào để mã Python của bạn biết tệp đó ở đâu?

Đó là một câu hỏi khá phức tạp. Nhưng bước đầu tiên để không lãng phí thời gian của bạn là nếu bạn thấy lỗi này, hãy dừng mọi việc bạn đang làm. Đừng điều chỉnh vòng lặp for phức tạp của bạn. Đừng cố cài đặt thư viện Python mới. Đừng khởi động lại máy tính của bạn, sau đó chạy lại tập lệnh để xem lỗi có tự khắc phục được không

Lỗi

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
3 xảy ra do bạn không biết tệp thực sự nằm ở đâu trên máy tính của mình. Hoặc, ngay cả khi bạn làm như vậy, bạn cũng không biết cách nói cho chương trình Python của mình biết nó đang ở đâu. Đừng cố sửa các phần khác trong mã của bạn không liên quan đến việc chỉ định tên tệp hoặc đường dẫn

Cách sửa lỗi FileNotFoundError

Đây là một sửa chữa chắc chắn. đảm bảo tệp thực sự tồn tại

Hãy bắt đầu lại từ đầu bằng cách mắc lỗi. Trong vỏ hệ thống của bạn [tôi. e. Terminal], thay đổi thư mục Desktop của bạn

file = open['data.py','w+']
0

Bây giờ, hãy chạy ipython

file = open['data.py','w+']
1

Và bây giờ bạn đang ở trong trình thông dịch Python tương tác, hãy thử mở một tên tệp mà bạn biết là không tồn tại trên Màn hình của mình, rồi tận hưởng thông báo lỗi

file = open['data.py','w+']
2____60

Bây giờ hãy tạo thủ công tệp trên Bàn làm việc của bạn, sử dụng Sublime Text 3 hoặc bất cứ thứ gì bạn muốn. Thêm một số văn bản vào nó, sau đó lưu nó

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
1

Hãy tự mình xem và thấy rằng tệp này thực sự tồn tại trong thư mục Máy tính để bàn của bạn

OK, bây giờ hãy quay lại trình bao Python tương tác của bạn [tôi. e. ipython], cái mà bạn đã mở sau khi chuyển sang thư mục Desktop [i. e.

file = open['data.py','a+']
00]. Chạy lại lệnh
myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
2 đó, lệnh dẫn đến FileNotFoundError

file = open['data.py','w+']
2

Hy vọng rằng, bạn không nên nhận được một lỗi

Nhưng đối tượng mà biến

file = open['data.py','a+']
02 trỏ tới là gì?

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
3

Và đó là gì? . e.

file = open['data.py','a+']
05

Sử dụng tính năng tự động hoàn thành Tab [i. e. gõ vào

file = open['data.py','a+']
06] để có danh sách các phương thức và thuộc tính hiện có cho đối tượng
file = open['data.py','a+']
02

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
4

Chà, chúng ta có thể làm được nhiều việc hơn với các tệp thay vì chỉ

file = open['data.py','a+']
08 từ chúng. Nhưng bây giờ hãy tập trung vào việc đọc

Giả sử biến

file = open['data.py','a+']
02 trỏ đến một số loại đối tượng tệp, đây là cách bạn đọc từ nó

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
5

Có gì trong biến

file = open['data.py','a+']
10 đó?

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
6

Nó chỉ là một chuỗi. Điều đó có nghĩa là tất nhiên chúng ta có thể in nó ra

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
7

Hoặc đếm số ký tự

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
8

Hoặc in ra bằng chữ in hoa toàn bộ

myfile = open["example.txt"]
txt = myfile.read[]
print[txt]
myfile.close[]
9

Và đó là tất cả những gì cần đọc từ một tệp đã được mở

Bây giờ vào những sai lầm

Làm thế nào để lộn xộn khi đọc từ một tập tin

Đây là một lỗi rất, rất phổ biến

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
0

Đầu ra lỗi

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
1

Hãy lưu ý cẩn thận rằng đây không phải là FileNotFoundError. Đó là AttributeError – phải thừa nhận là không rõ lắm – nhưng hãy đọc phần tiếp theo

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
2

Thông báo lỗi đến điểm. đối tượng

file = open['data.py','a+']
05 – tôi. e. một chuỗi ký tự, e. g. một cái gì đó như
file = open['data.py','a+']
13 không có thuộc tính
file = open['data.py','a+']
14

Xem lại mã bị lỗi

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
0

Nếu

file = open['data.py','a+']
15 trỏ đến "ví dụ. txt", thì
file = open['data.py','a+']
15 chỉ đơn giản là một đối tượng
file = open['data.py','a+']
05

Nói cách khác, tên tệp không phải là đối tượng tệp. Đây là một ví dụ rõ ràng hơn về mã lỗi

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
4

Và để đánh bại quan điểm về cái đầu

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
5

Tại sao đây là một sai lầm phổ biến như vậy? . Giao diện đồ họa làm xáo trộn quy trình – và vì lý do chính đáng. Ai quan tâm chuyện gì đang xảy ra miễn là tệp của tôi mở ra khi tôi nhấp đúp vào tệp

Thật không may, chúng tôi phải quan tâm khi cố gắng đọc tệp theo chương trình. Mở một tệp là một hoạt động rời rạc từ việc đọc nó

  • Bạn mở một tệp bằng cách chuyển tên tệp của nó – e. g.
    myfile = open["example.txt"]
    for line in myfile:
        print[line]
    myfile.close[]
    
    1 – vào hàm
    myfile = open["example.txt"]
    for line in myfile:
        print[line]
    myfile.close[]
    
    2. Hàm
    myfile = open["example.txt"]
    for line in myfile:
        print[line]
    myfile.close[]
    
    2 trả về một đối tượng tệp
  • Để thực sự đọc nội dung của một tệp, bạn gọi phương thức read[] của đối tượng tệp đó

Một lần nữa, đây là mã, theo kiểu dài dòng hơn một chút

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
6

Đối tượng tệp cũng có phương thức

file = open['data.py','a+']
31, phương thức này chính thức dọn sạch sau khi tệp được mở và cho phép các chương trình khác truy cập tệp đó một cách an toàn. Một lần nữa, đó là một chi tiết cấp thấp mà bạn không bao giờ nghĩ đến trong điện toán hàng ngày. Trên thực tế, đó là điều mà bạn có thể sẽ quên trong ngữ cảnh lập trình, vì việc không đóng tệp sẽ không tự động phá vỡ bất kỳ thứ gì [ít nhất là cho đến khi chúng ta bắt đầu thực hiện các loại thao tác tệp phức tạp hơn nhiều…]. Thông thường, ngay sau khi tập lệnh kết thúc, mọi tệp chưa được đóng sẽ tự động bị đóng

Tuy nhiên, tôi thích đóng tệp một cách rõ ràng - không chỉ để đảm bảo an toàn - mà còn giúp củng cố khái niệm về đối tượng tệp đó

Một trong những lợi thế của việc đi sâu vào các chi tiết cấp thấp hơn của việc mở và đọc từ các tệp là giờ đây chúng tôi có khả năng đọc các tệp theo từng dòng, thay vì một đoạn lớn. Một lần nữa, để đọc các tệp dưới dạng một khối nội dung khổng lồ, hãy sử dụng phương pháp

file = open['data.py','a+']
08

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
7

Bây giờ nó không có vẻ là một vấn đề lớn như vậy, nhưng đó là bởi vì

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]
1 có thể chỉ chứa một vài dòng. Nhưng khi chúng tôi xử lý các tệp lớn – như cả 3. 3 triệu hồ sơ của tất cả những người đã quyên góp hơn 200 đô la cho một U. S. ủy ban chiến dịch tranh cử tổng thống năm 2012 hoặc tất cả những người đã từng đến thăm Nhà Trắng – việc mở và đọc tất cả tệp cùng một lúc sẽ chậm hơn đáng kể. Và nó thậm chí có thể làm hỏng máy tính của bạn

Nếu bạn thắc mắc tại sao phần mềm bảng tính, chẳng hạn như Excel, có giới hạn số hàng [khoảng 1.000.000], thì đó là vì hầu hết người dùng muốn thao tác trên một tệp dữ liệu cùng một lúc. Tuy nhiên, nhiều tệp dữ liệu thú vị quá lớn đối với điều đó. Chúng ta sẽ gặp những tình huống đó sau trong quý

Hiện tại, đây là cách đọc từng dòng thường trông như thế nào

myfile = open["example.txt"]
for line in myfile:
    print[line]
myfile.close[]

Bởi vì mỗi dòng trong tệp văn bản có một ký tự xuống dòng [được biểu thị là

file = open['data.py','a+']
34 nhưng thường là "ẩn"], nên việc gọi hàm print[] sẽ tạo đầu ra có khoảng cách kép, bởi vì print[] thêm một dòng mới vào nội dung mà nó xuất ra [i. e. nghĩ lại chương trình
file = open['data.py','a+']
35 ban đầu của bạn]

Để loại bỏ hiệu ứng đó, gọi là phương thức ________ 136, thuộc về đối tượng ________ 105 và loại bỏ các ký tự khoảng trắng ở bên trái và bên phải của chuỗi văn bản

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
9

Và tất nhiên, bạn có thể làm cho mọi thứ trở nên ồn ào với chức năng ol'

file = open['data.py','a+']
38 tốt

myfile = open["example.txt"]
print[myfile.read[]]
myfile.close[]
9

Đó là nó cho bây giờ. Chúng tôi chưa đề cập đến cách ghi vào một tệp [đây là một thao tác nguy hiểm hơn nhiều] – tôi để dành phần đó cho một bài học riêng. Nhưng cũng đủ biết rằng khi xử lý tệp với tư cách là một lập trình viên, chúng ta phải rõ ràng và cụ thể hơn rất nhiều trong các bước

Tại sao nó nói tập tin không tồn tại?

Bạn đã cố mở một ứng dụng không tồn tại [ứng dụng chưa từng tồn tại hoặc đã bị xóa hoặc di chuyển] hoặc trên phương tiện di động không khả dụng . Bạn đã cố nhập hoặc đính kèm tệp không có trong thư mục bạn đã chỉ định.

Điều gì xảy ra nếu bạn mở một tệp không tồn tại trong Python?

r+. Nó mở tệp cần thiết ở cả hai chế độ [đọc và ghi]. một +. Nếu tệp không tồn tại, trước tiên, tệp được tạo và sau đó được mở ở chế độ chắp thêm .

Chủ Đề