Lệnh chạy Python và chuyển hướng đầu ra sang tệp
Tôi đang chạy cùng một tập lệnh python nhiều lần chuyển hướng đầu ra theo các cách khác nhau và bị hỏng đầu ra. Đôi khi các dòng bị thiếu và đôi khi thứ tự bị đảo ngược. Tập lệnh python bao gồm một số câu lệnh in mà tôi muốn in thành tệp đầu ra Show
Trước hết hãy để tôi chỉ cho bạn đầu ra trông như thế nào
Chạy A. Tôi đang chạy tập lệnh với đầu ra mặc định. màn hình của tôi. Thứ tự của câu lệnh in là đúng, nhưng hai câu lệnh in cuối cùng bị thiếu
Chạy B. Bây giờ tôi đang chạy cùng một tập lệnh và chuyển hướng đầu ra thành tệp "đầu ra. txt". Bây giờ nó in vài dòng đầu tiên ra màn hình của tôi và hai dòng cuối cùng vào tệp. Tại sao không phải tất cả mọi thứ vào tập tin? . Dòng đầu tiên của tệp (True PRS. ) phải xuất hiện trước dòng cuối cùng của đầu ra màn hình (Xác định trường hợp. )
Chạy C. Tôi hiện đang sử dụng Nohup và lưu kết quả đầu ra vào tệp ". /data/case_control/đầu ra. txt". Bây giờ tất cả đầu ra được chuyển hướng đến tệp đầu ra nhưng thứ tự của hai câu lệnh "True PRS. " và "Xác định trường hợp. " vẫn bị đảo ngược
Tôi chắc chắn 80% rằng đây là sự cố trong trình bao chứ không phải trong tập lệnh python của tôi. Mọi thứ đều ổn, nếu đó là trường hợp. Tuy nhiên, điều quan trọng là tập lệnh python chạy đúng cách Hàm 2 của Python thường được sử dụng để hiển thị văn bản trong dòng lệnh hoặc trong trình thông dịch tương tác, tùy thuộc vào cách chương trình Python được thực thi. Tuy nhiên, chúng ta có thể thay đổi hành vi của nó để ghi văn bản vào tệp thay vì vào bảng điều khiểnTrong bài viết này, chúng ta sẽ xem xét nhiều cách chúng ta có thể ghi vào tệp bằng hàm 2Chuyển hướng đầu ra tập lệnh của Python trong TerminalCách nhanh chóng và bẩn thỉu để chuyển hướng đầu ra của tập lệnh Python là trực tiếp từ dòng lệnh trong khi thực thi tập lệnh Ví dụ: nếu chúng tôi có tệp Python có tên 1 với nội dung sauChúng ta có thể chuyển hướng đầu ra của tệp trong trình bao bằng cách sử dụng một dấu ngoặc đơn bên phải
Nếu chúng tôi mở 2 mới tạo của mình, chúng tôi sẽ thấy các nội dung sau
Tuy nhiên, với phương pháp này, tất cả đầu ra của tập lệnh được ghi vào một tệp. Việc thực hiện chuyển hướng này từ bên trong tập lệnh Python thường linh hoạt hơn Chuyển hướng luồng đầu ra tiêu chuẩnTrong Python, hàm 2 linh hoạt hơn bạn tưởng. Nó không được mã hóa cứng theo cách chỉ có thể ghi văn bản được chỉ định vào màn hình. Thay vào đó, nó gửi văn bản đến một vị trí được gọi là luồng đầu ra tiêu chuẩn, còn được gọi là 4Tất cả các hệ thống UNIX có ba đường ống chính - đường ống đầu vào tiêu chuẩn ( 5), đường ống đầu ra tiêu chuẩn ( 4) và đường ống lỗi tiêu chuẩn ( 7)Theo mặc định, đường ống đầu ra tiêu chuẩn trỏ đến cửa sổ tương tác được sử dụng để thực thi chương trình, vì vậy chúng ta thường thấy văn bản được in ra trên màn hình. Tuy nhiên, đầu ra tiêu chuẩn có thể được chuyển hướng đến các vị trí khác, chẳng hạn như tệp, để thuận tiện Nếu đầu ra tiêu chuẩn được chuyển hướng đến một tệp cụ thể, văn bản được chỉ định trong hàm 2 sẽ được ghi vào tệp đó thay vì được hiển thị trên màn hìnhTrong Python, có thể lấy tham chiếu đến đầu ra tiêu chuẩn bằng cách sử dụng đối tượng 4 của mô-đun 50. Nó là một đối tượng giống như tệp, nghĩa là nó có các phương thức cho phép Python đọc và ghi từ nó giống như một tệp thực tếHãy xem một ví dụ nơi chúng tôi thay đổi 4 thành một tệpHàm 2 lấy đối số chuỗi được cung cấp, nối một ký tự xuống dòng vào cuối và gọi phương thức 53 để ghi nó vào đầu ra tiêu chuẩnTrong ví dụ trên, đầu tiên chúng ta in một dòng văn bản như chúng ta đã quen, dòng này sẽ được hiển thị trong bảng điều khiển khi chúng ta chạy tệp. Sau đó, chúng tôi đã gán lại 4 cho đối tượng tệp tùy chỉnh của mình - 55. Vì một đối tượng tệp có phương thức 56 hoàn toàn hợp lệ, nên giá trị in của chúng tôi được ghi vào tệp mà không gặp sự cốLưu ý rằng nên lưu trữ giá trị ban đầu của đầu ra tiêu chuẩn trong một biến trước khi thay đổi nó. Bằng cách này, chúng tôi có thể đặt lại đầu ra tiêu chuẩn về giá trị ban đầu sau khi hoàn tất, điều này có thể giúp tránh nhầm lẫn Hãy lưu mã vào một tệp mới, 57. Và sau đó, hãy thực hiện nó 5Chúng ta sẽ thấy đầu ra sau trong Terminal 3Và đoạn script sẽ tạo một file mới có tên là 58 với nội dung như sauHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó 5Bạn đã chuyển hướng thành công dữ liệu từ luồng đầu ra tiêu chuẩn sang một tệp. Hãy xem cách chúng ta có thể làm điều này với một đối tượng giống như tệp phổ biến khác dành riêng cho các lỗi lập trình Chuyển hướng luồng lỗi tiêu chuẩnTrong Python, các lỗi được ghi vào luồng lỗi tiêu chuẩn, còn được gọi là 7. Điều này cũng mặc định cho cửa sổ tương tác nhưng có thể thay đổi thông qua đối tượng 30. Nếu chúng tôi muốn in các giá trị tới 7, chúng tôi chỉ cần chuyển hướng 32 để trỏ tới 30Tạo một tệp có tên 34 và thêm đoạn mã sauVí dụ này gần giống với ví dụ trước, ngoại trừ việc thay vì chuyển hướng luồng đầu ra tiêu chuẩn tới một tệp, chúng tôi chuyển hướng nó tới luồng lỗi tiêu chuẩn. Nếu luồng lỗi tiêu chuẩn cũng được chuyển hướng đến một nơi khác, đầu ra sẽ được gửi đến vị trí đó thay vì màn hình Hãy chạy tập tin này 2đầu ra của chúng tôi sẽ hiển thị 3Mặc dù nó có thể xuất hiện giống như đầu ra thông thường đối với chúng tôi, nhưng đối với máy tính, nó được hiển thị thông qua các đường ống khác nhau In Sử dụng Tham số "tệp"Trong các ví dụ trước, chúng tôi đã chuyển hướng rõ ràng đầu ra tiêu chuẩn sang một đối tượng giống như tệp khác bằng cách thay đổi đối tượng 4. Tuy nhiên, để thuận tiện, chúng ta có thể thực hiện việc này trực tiếp từ bên trong hàm 2 bằng cách chỉ định vị trí đầu ra với tham số 37Ví dụ: nếu chúng tôi muốn in trực tiếp vào một tệp mà không thay đổi toàn bộ tập lệnh 4, chúng tôi sẽ viết 7Vì chúng tôi không loay hoay với việc chuyển hướng đầu ra tiêu chuẩn một cách rõ ràng, nên chúng tôi không còn phải đặt lại nó về giá trị ban đầu. Do đó, đây là cách ưa thích để ghi vào tệp có hàm 2Ghi chú. Mặc dù tên của tham số là 37, hãy nhớ rằng nó hoạt động với mọi đối tượng giống như tệp. Ví dụ, nếu bạn muốn in thành 7, bạn sẽ thay đổi câu lệnh 2 thành 0Phần kết luậnTrong bài viết này, chúng ta đã thảo luận về việc chuyển hướng đầu ra hàm 2 của Python bằng nhiều phương thức khác nhau. Các phương pháp này bao gồm chuyển hướng đầu ra của tập lệnh Python từ dòng lệnh, chuyển hướng đầu ra tiêu chuẩn trong tập lệnh Python và chỉ định trực tiếp một đối tượng dạng tệp trong tham số 37 trong hàm 2Bài viết này được viết bởi Jacob Stopak, một nhà phát triển phần mềm và nhà tư vấn với niềm đam mê giúp đỡ người khác cải thiện cuộc sống của họ thông qua mã. Jacob là tác giả của Coding Essentials Guidebook for Developers, một cuốn sách giới thiệu bao gồm các khái niệm và công cụ mã hóa thiết yếu. Nó chứa các chương về kiến trúc máy tính cơ bản, Internet, Dòng lệnh, HTML, CSS, JavaScript, Python, Java, cơ sở dữ liệu/SQL, Git, v.v. Bạn sẽ chuyển hướng đầu ra tiêu chuẩn của lệnh sang một tệp như thế nào?Vì chuyển hướng là một phương pháp ghi lại đầu ra của chương trình và gửi nó dưới dạng đầu vào cho một lệnh hoặc tệp khác. Các luồng I/O có thể được chuyển hướng bằng cách sử dụng toán tử n>, trong đó n là số mô tả tệp. Để chuyển hướng thiết bị xuất chuẩn, chúng tôi sử dụng “1>” và đối với thiết bị xuất chuẩn, “2>” được thêm làm toán tử.
Làm cách nào để bạn chuyển hướng đầu ra từ thiết bị xuất chuẩn sang một tệp trong Python?cách dễ nhất để chuyển hướng thiết bị xuất chuẩn trong python là chỉ cần gán cho nó một đối tượng tệp đang mở . chúng ta hãy xem một ví dụ đơn giản. nhập sys def redirect_to_file(văn bản). ban đầu = hệ thống. hệ thống thiết bị xuất chuẩn.
Làm cách nào để lưu đầu ra dấu nhắc lệnh vào tệp văn bản trong Python?Để lưu đầu ra lệnh vào tệp văn bản bằng Dấu nhắc Lệnh, hãy làm theo các bước sau. . Mở bắt đầu Tìm kiếm Dấu nhắc Lệnh Bấm chuột phải vào kết quả trên cùng và chọn tùy chọn Chạy với tư cách quản trị viên Nhập lệnh sau để lưu đầu ra vào tệp văn bản và nhấn Enter. LỆNH CỦA BẠN > C. \PATH\TO\FOLDER\OUTPUT. txt Lệnh nào sẽ chuyển hướng ai xuất ra tệp?Chuyển hướng đầu ra
. > tệp2 . khiến trình bao đặt đầu ra từ lệnh trong một tệp có tên "file2" thay vì trên màn hình. |