EOF bất ngờ có nghĩa là người đọc BCP đã tìm thấy EOF khi nó đang mong đợi nhiều dữ liệu hơn. EOF này có thể là: Show (1) Kết thúc vật lý thực tế (không còn byte nữa). Điều này có nghĩa là bạn có dữ liệu định dạng sai. Kiểm tra gần cuối tệp của bạn để biết bản ghi không đầy đủ. HOẶC . Một điểm đánh dấu cuối tệp khi đọc từ bất kỳ tệp nào, không chỉ là thiết bị đầu cuối. Điều này bao gồm Python - Hành vi được xác định bởi C stdlib. Kiểm tra '\ x1a' trong dữ liệu của bạn. Cập nhật phản hồi các bình luận một cách dễ đọc: responding to comments in a legible fashion: Trong Notepad ++, bạn có thể làm cho nó hiển thị các ký tự bất thường bằng cách thực hiện chế độ xem / hiển thị ký hiệu / hiển thị tất cả các ký tự. Bạn có thể tìm kiếm bằng cách thực hiện Ctrl-F, gõ \ x1a vào hộp tìm kiếm và chọn nút radio mở rộng trong bảng tìm kiếm. Hoặc bạn có thể với một chút Python có được số dòng của Ctrl-Z đầu tiên:
Trường hợp .dat của bạn được tạo ra không quan trọng. Một CTRL-Z không chủ ý có thể xảy ra ở bất cứ đâu trong một tệp được tạo trên bất kỳ hệ điều hành nào. Đó là nơi nó đang được đọc dưới dạng tệp văn bản quan trọng - Windows? Bang!
xin chào Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? như: fd.write (EOF) hoặc một cái gì đó GRT, Ruben 19 tháng 8 '06 #1
Trong, Cage đã viết: Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? như: fd.write (EOF) hoặc một cái gì đó Bạn mong đợi điều này với điều gì? Viết một byte vào tệp và bạn không biết byte này có giá trị nào? Ciao, Marc 'Blackjack' Rintsch 19 tháng 8 '06 #2
Vào ngày 2006-08-19, Cage Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? Không. Không có trên Windows, OS-X hoặc Unix. Không có thứ gọi là "một EOF". Trên CP/M Ctrl-Z được sử dụng làm EOF cho các tệp văn bản. - Grant Edwards gr****@visi.com 19 tháng 8 '06 #3
Marc 'Blackjack' Rintsch Schreef: Trong, Cage đã viết:> Tôi có thể viết EOF vào bộ mô tả tệp mà không đóng nó không? Giống như: fd.write (EOF) hoặc một cái gì đó>can i write a eof to a file descriptor without closing it? 19 tháng 8 '06 #2 GRT, Ruben 19 tháng 8 '06 #1
Trong, Cage đã viết: Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? như: fd.write (EOF) hoặc một cái gì đó Ciao, Marc 'Blackjack' Rintsch 19 tháng 8 '06 #2 Vào ngày 2006-08-19, Cage Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? Không. Không có trên Windows, OS-X hoặc Unix. Không có thứ gọi là "một EOF". Trên CP/M Ctrl-Z được sử dụng làm EOF cho các tệp văn bản. - Grant Edwards gr****@visi.com 19 tháng 8 '06 #3
Marc 'Blackjack' Rintsch Schreef: Trong, Cage đã viết:> Tôi có thể viết EOF vào bộ mô tả tệp mà không đóng nó không? Giống như: fd.write (EOF) hoặc một cái gì đó Ciao, Marc 'Blackjack' Rintsch Ok, hãy để tôi giải thích điều này nhiều hơn một chút ... Tôi muốn sử dụng một chương trình có chế độ 'ống', trong đó bạn có thể sử dụng stdin để gửi các lệnh đến chương trình. Tôi phát hiện ra rằng, khi ở chế độ ống và bạn đang sử dụng bàn phím làm nguồn đầu vào, bạn có thể thực hiện CTRL-D để 'tín hiệu' chương trình mà bạn đã nhập lệnh hoàn tất. Chương trình phân tích cú pháp và sau đó thực hiện lệnh, và nó không thoát. Nó thoát sau khi 'thoát \ n' + ctrl-d bây giờ tôi muốn một tập lệnh python để cung cấp đầu vào, làm thế nào để tôi làm điều đó? Bây giờ tôi sử dụng popen để có thể ghi vào stdin (p_stdin) của chương trình, tôi nhận thấy rằng khi tôi thực hiện p_stdin.close (), nó hoạt động như một 'ctrl-d' trong đó chương trình nhận ra tín hiệu để xử lý lệnh, nhưng Sau đó, tôi không thể sử dụng p_stdin nữa để làm p_stdin.write (...)
19 tháng 8 '06 #4 Marc 'Blackjack' Rintsch Schreef:Trong, Cage đã viết:> Tôi có thể viết EOF vào bộ mô tả tệp mà không đóng nó không? Giống như: fd.write (EOF) hoặc một cái gì đó>>can i write a eof to a file descriptor without closing it? Theo Wikipedia (phiên bản tiếng Đức, nhưng tôi cá là bạn cũng có thể nhận được thông tin đó bằng tiếng Anh) C -D gửi EOT - kết thúc truyền. Đó là ASCII 0x04. Vì vậy, tôi khuyên bạn nên thử viết "\ x04" đến đường ống. Có lẽ điều đó hoạt động. Diez 19 tháng 8 '06 #7
Viết giá trị nhị phân cho ^d vào luồng sẽ không làm gì cả. Giá trị đó báo hiệu shell để đóng luồng, vì vậy nó chỉ có ý nghĩa khi bạn gõ một cái gì đó vào vỏ. Đối với OP: Viết một EOF vào một luồng mà không đóng nó không có ý nghĩa gì. EOF có nghĩa là-kết thúc tập tin. Khi chương trình đạt đến EOF, nó không thể đọc thêm bất kỳ giá trị nào từ luồng, vì vậy hãy mở nó để viết thêm nội dung vào nó thậm chí sẽ không hoạt động. 19 tháng 8 '06 #8
Trên thực tế, không bao giờ. Có vẻ như nhận được một EOF từ một luồng cho biết khi nào nên dừng 'đọc', không nhất thiết là luồng được đóng. Thật là một hành vi kỳ lạ. 19 tháng 8 '06 #9
Cage đã viết: xin chào Không nhưng dù sao cũng có một EOF cho tệp, ngay cả khi nó được mở. Tôi nhớ lại theo MS-DOS, bạn có thể tạo một tệp có kích thước N mà không cần ghi vào nó (một số int21 hoặc 9? Gọi để sửa đổi chất béo) ... không còn thực sự khả thi nữa. Philippe 19 tháng 8 '06 #10
Cage đã viết: xin chào Tôi có thể viết EOF vào bộ mô tả tệp mà không cần đóng nó không? như: fd.write (EOF) hoặc một cái gì đó GRT, Ruben Không nhưng dù sao cũng có một EOF cho tệp, ngay cả khi nó được mở.
Tôi nhớ lại theo MS-DOS, bạn có thể tạo một tệp có kích thước N mà không cần ghi vào nó (một số int21 hoặc 9? Gọi để sửa đổi chất béo) ... không còn thực sự khả thi nữa. Philippe 20 tháng 8 '06 #11 Vào ngày 2006-08-19, Tim Chase Không. Không có trên Windows, OS-X hoặc Unix. Không có thứ gọi là "một EOF". Trên CP/M Ctrl-Z được sử dụng làm EOF cho các tệp văn bản. Quy ước DOS/Window phổ biến cũng sử dụng Ctrl+Z (0x1a) cho EOF. C: \ sao chép Test.txt Xin chào ^Z C: \>
Iirc, ctrl-z không được sử dụng _in_files_ để đại diện cho EOF. Chỉ khi văn bản được nhập tại bảng điều khiển. *Nix thường sử dụng Ctrl+D (0x04) làm tín hiệu EOF ... và OS-X được Unixish cũng sử dụng giống nhau. bash $ cat test.txt xin chào ^d bash $ Đó chỉ là lớp kỷ luật dòng tty của trình điều khiển TTY. Khi nó xem CTRL-D là điều đầu tiên trên một "dòng", nó sẽ đóng bộ mô tả tệp khiến máy khách thấy EOF. Tính năng đó trong lớp Dòng Discipline có thể được vô hiệu hóa hoặc cấu hình để sử dụng bất kỳ ký tự nào khác. Tôi nghi ngờ những gì OP thực sự cần làm là viết một dòng mới và sau đó xả luồng. - Grant Edwards Grante Yow! Tôi đang giả vờ rằng tại tất cả chúng ta đều xem Phil Visi.com Silvers thay vì Ricardo Montalban! 21 tháng 8 '06 #12 Cấp Edwards
Iirc, ctrl-z không được sử dụng _in_files_ để đại diện cho EOF. Chỉ khi văn bản được nhập tại bảng điều khiển. Dễ dàng kiểm tra, nếu bạn có Windows: Tuy nhiên, bài kiểm tra của bạn không khớp với ví dụ của OP, sử dụng Control-Z để tín hiệu kết thúc tệp khi đọc từ bảng điều khiển: > Sao chép Test.txt Xin chào ^Z 1 Tệp được sao chép. Điều khiển-Z đó hoạt động theo cách tương tự như Control-D trên Unix và không có ký tự EOF nào được sao chép vào tệp: > python -c "in repr (open ('test.txt', 'rb'). read ())" 'Xin chào \ r \ n' GRT, Ruben 21 tháng 8 '06 #14
Vào ngày 2006-08-21, Alex Martelli Cấp Edwards Tôi có thể, nhưng tôi sẽ không thừa nhận nó ở nơi công cộng. :) 'lệnh cấm'>>> n = 'foo.txt's =' ba \ r \ n '+chr (26)+' bo \ r \ r'open (n, 'wb'). Viết (s) ss = open (n). đọc () ss Đúng rồi. và vẫn được theo sau bởi Windows (và bởi Python chạy trên Windows). Rất thú vị. Tôi nghĩ rằng Windows đã từ bỏ điều đó. Tôi nhớ gặp sự cố trong DOS/Windows do trình soạn thảo văn bản cũ đặt Ctrl-Z ở cuối tệp-có lẽ là kết quả của các chương trình khác đọc tệp ở chế độ nhị phân và xem Ctrl-Z. Tuy nhiên, tôi nghi ngờ nó sẽ giúp áp phích ban đầu-tôi nghĩ, như /f và bạn, rằng một dòng kết thúc và tuôn ra có thể là những gì anh ta cần. - Grant Edwards Grante Yow! Tôi đã bầu chưa? tại Visi.com 21 tháng 8 '06 #15 Chủ đề thảo luận này đã đóngCâu trả lời đã bị vô hiệu hóa cho cuộc thảo luận này. Làm thế nào để bạn viết EOF trong Python?Hướng dẫn này giới thiệu các cách khác nhau để tìm hiểu xem một tệp có ở EOF của nó trong Python hay không ... Sử dụng tệp.đọc () để tìm kết thúc của tập tin trong Python..... Sử dụng phương thức readline () với vòng lặp thời gian để tìm kết thúc tệp trong python.Tập tin..... Sử dụng toán tử Walrus để tìm kết thúc tệp trong Python .. Làm cách nào để thêm ký tự vào EOF?Nói chung, bạn có thể "kích hoạt EOF" trong một chương trình chạy trong một thiết bị đầu cuối có tổ hợp phím Ctrl + D ngay sau lần đầu vào cuối cùng.CTRL + D keystroke right after the last input flush.
Làm thế nào để bạn đánh dấu EOF?Dấu EOF rất hữu ích trong việc truyền dữ liệu và lưu trữ.Các tệp được lưu trữ trong các khối và điểm đánh dấu cuối giúp máy tính biết rằng nó đã phân bổ đủ không gian để lưu trữ tệp.EOF thường được biểu thị bằng cách nhấn và giữ Ctrl và nhấn Z trong DOS và OS/2 hoặc nhấn và giữ CTRL và nhấn D trong Unix.pressing and holding Ctrl and pressing Z in DOS and OS/2 or pressing and holding Ctrl and pressing D in Unix.
Nhân vật EOF trong Python là gì?EOF là viết tắt của kết thúc tập tin.Vâng, về mặt kỹ thuật, nó không phải là một lỗi, thay vào đó là một ngoại lệ.End Of File. Well, technically it is not an error, rather an exception. |