Mô-đun chạy IPython

Đầu tiên và quan trọng nhất, IPython Notebook là một môi trường tương tác để viết và chạy mã Python

Mã được chạy trong một quy trình riêng gọi là Hạt nhân IPython. Kernel có thể bị gián đoạn hoặc khởi động lại. Hãy thử chạy ô sau rồi nhấn nút "Dừng" trên thanh công cụ ở trên

Nhập đánh dấu cho văn bản và latex

Ví dụ: nếu \(x=\alpha\) thì \(x^2 = \alpha^2\). Hơn nữa \[ \int\limits_a^b f(x) \mathrm{d} x = \Gamma. \]

Bất cứ khi nào tôi bắt đầu $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 01 trong một thiết bị đầu cuối, tôi luôn cần nhập các mô-đun yêu thích của mình trước khi có thể bắt đầu làm việc. Ngày nay, đây luôn là một rắc rối do có quá nhiều nhiệm vụ, vì vậy hãy tự động hóa cả việc đó

Hồ sơ IPython

Ý tưởng chính ở đây là truy cập hồ sơ IPython của bạn và thiết lập các hành động bạn muốn chạy khi khởi động. Hồ sơ của bạn có thể được đặt tại $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 02 trên Linux (bạn có thể phải tìm kiếm hệ điều hành của mình trên google). Đây là cấu hình IPython mặc định. Ở đó bạn sẽ tìm thấy một thư mục $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 03 có tệp $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 04 trong đó

Tập lệnh khởi động

Bạn có thể đọc $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 04 trong thư mục $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 03 nếu muốn, nhưng tất cả những gì nó nói là bất kỳ tệp $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 07 và $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 08 nào trong thư mục này sẽ được trình thông dịch Python thực thi trước khi dấu nhắc hiển thị cho chúng ta. Kinda những gì chúng ta muốn, phải không?

Chỉ cần đặt một tệp python trong thư mục này với mã cần thiết. Tôi đặt một tệp có tên là $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 09 (bạn có thể đặt tên cho tệp bất cứ điều gì bạn muốn) với nội dung sau

import numpy as np import scipy as scp import torch import torchvision

Và Voila. Giờ đây, bạn có thể mở lời nhắc $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 01 và trực tiếp làm việc với các mô-đun của mình

Làm như trên cho hồ sơ mặc định của bạn là đủ, mặc dù bạn có thể tạo một hồ sơ tùy chỉnh nếu muốn, tùy thuộc vào dự án và những thứ khác

IPython Notebook và các công cụ tương tác khác rất phù hợp để tạo mẫu mã và khám phá dữ liệu, nhưng sớm hay muộn chúng ta sẽ muốn sử dụng chương trình của mình trong một đường dẫn hoặc chạy nó trong tập lệnh trình bao để xử lý hàng nghìn tệp dữ liệu. Để làm được điều đó, chúng ta cần làm cho các chương trình của mình hoạt động giống như các công cụ dòng lệnh Unix khác. Ví dụ: chúng tôi có thể muốn một chương trình đọc tập dữ liệu và in mức độ viêm trung bình trên mỗi bệnh nhân

$ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9

nhưng chúng tôi cũng có thể muốn xem xét tối thiểu bốn dòng đầu tiên

$ head -4 inflammation-01.csv | python readings.py --min

hoặc các lần viêm tối đa trong một số tệp lần lượt

$ python readings.py --max inflammation-*.csv

Yêu cầu chung của chúng tôi là

  1. Nếu không có tên tệp nào được cung cấp trên dòng lệnh, hãy đọc dữ liệu từ
  2. Nếu một hoặc nhiều tên tệp được cung cấp, hãy đọc dữ liệu từ chúng và báo cáo số liệu thống kê cho từng tệp riêng biệt
  3. Sử dụng cờ import sys print 'version is', sys.version 8, import sys print 'version is', sys.version 9 hoặc %run sys-version.py0 để xác định số liệu thống kê cần in

Để thực hiện công việc này, chúng ta cần biết cách xử lý các đối số dòng lệnh trong một chương trình và cách lấy đầu vào tiêu chuẩn. Chúng ta sẽ lần lượt giải quyết những câu hỏi này dưới đây

mục tiêu

  • Sử dụng các giá trị của đối số dòng lệnh trong một chương trình
  • Xử lý cờ và tệp riêng biệt trong chương trình dòng lệnh
  • Đọc dữ liệu từ đầu vào tiêu chuẩn trong một chương trình để nó có thể được sử dụng trong một đường dẫn

Đối số dòng lệnh

Sử dụng trình soạn thảo văn bản bạn chọn, lưu phần sau vào tệp văn bản

!cat sys-version.py

import sys print 'version is', sys.version

Dòng đầu tiên nhập một thư viện có tên là %run sys-version.py1, viết tắt của "system". Nó xác định các giá trị như %run sys-version.py2, mô tả phiên bản Python nào chúng tôi đang chạy. Chúng tôi có thể chạy tập lệnh này từ bên trong IPython Notebook như thế này

%run sys-version.py

$ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 2

hoặc như thế này

$ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 3

$ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 2

Phương thức đầu tiên, %run sys-version.py3, sử dụng một lệnh đặc biệt trong IPython Notebook để chạy chương trình trong tệp %run sys-version.py4. Phương pháp thứ hai tổng quát hơn. dấu chấm than %run sys-version.py5 yêu cầu Notebook chạy lệnh trình bao và thực tế là lệnh chúng tôi chạy là %run sys-version.py6 với tên của tập lệnh

Đây là một kịch bản khác làm điều gì đó thú vị hơn

$ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 9

$ head -4 inflammation-01.csv | python readings.py --min 0

Cái tên lạ lùng %run sys-version.py7 là viết tắt của "argument values". Bất cứ khi nào Python chạy một chương trình, nó sẽ lấy tất cả các giá trị được cung cấp trên dòng lệnh và đặt chúng vào danh sách %run sys-version.py8 để chương trình có thể xác định chúng là gì. Nếu chúng ta chạy chương trình này mà không có đối số

$ head -4 inflammation-01.csv | python readings.py --min 1

$ head -4 inflammation-01.csv | python readings.py --min 2

điều duy nhất trong danh sách là đường dẫn đầy đủ đến tập lệnh của bạn, đường dẫn này luôn là ________ 69. Tuy nhiên, nếu chúng ta chạy nó với một vài đối số

$ head -4 inflammation-01.csv | python readings.py --min 3

$ head -4 inflammation-01.csv | python readings.py --min 4

sau đó Python thêm từng đối số đó vào danh sách ma thuật đó

Với điều này trong tay, hãy xây dựng một phiên bản $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 20 luôn in giá trị trung bình cho mỗi bệnh nhân của một tệp dữ liệu. Bước đầu tiên là viết một hàm phác thảo cách triển khai của chúng ta và một trình giữ chỗ cho hàm thực hiện công việc thực tế. Theo quy ước, chức năng này thường được gọi là $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21, mặc dù chúng ta có thể gọi nó là gì chúng ta muốn

$ head -4 inflammation-01.csv | python readings.py --min 5

$ head -4 inflammation-01.csv | python readings.py --min 6

Hàm này lấy tên của tập lệnh từ %run sys-version.py9, vì đó là nơi nó luôn được đặt và tên của tệp để xử lý từ $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 23. Đây là một thử nghiệm đơn giản

$ head -4 inflammation-01.csv | python readings.py --min 7

Không có đầu ra vì chúng tôi đã xác định một chức năng, nhưng chưa thực sự gọi nó. Hãy thêm một cuộc gọi đến $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21

$ head -4 inflammation-01.csv | python readings.py --min 8

$ head -4 inflammation-01.csv | python readings.py --min 9

và chạy nó

$ python readings.py --max inflammation-*.csv 0

$ python readings.py --max inflammation-*.csv 1

Cách đúng đắn để làm điều đó

Nếu các chương trình của chúng tôi có thể nhận các tham số phức tạp hoặc nhiều tên tệp, thì chúng tôi không nên xử lý trực tiếp %run sys-version.py8. Thay vào đó, chúng ta nên sử dụng thư viện $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 26 của Python, thư viện này xử lý các trường hợp phổ biến một cách có hệ thống và cũng giúp chúng ta dễ dàng cung cấp các thông báo lỗi hợp lý cho người dùng của mình

thử thách

  1. Viết chương trình dòng lệnh thực hiện phép cộng và phép trừ

    $ python readings.py --max inflammation-*.csv 2

    Điều gì xảy ra nếu bạn cố thêm phép nhân sử dụng '*' vào chương trình?

  2. Sử dụng module $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 27 giới thiệu 03 vòng. ipynb, hãy viết một phiên bản đơn giản của $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 28 hiển thị các tệp trong thư mục hiện tại với một hậu tố cụ thể

    $ python readings.py --max inflammation-*.csv 3

Xử lý nhiều tệp

Bước tiếp theo là hướng dẫn chương trình của chúng ta cách xử lý nhiều tệp. Vì 60 dòng đầu ra trên mỗi tệp là rất nhiều trang, chúng tôi sẽ bắt đầu bằng cách tạo ba tệp nhỏ hơn, mỗi tệp có ba ngày dữ liệu cho hai bệnh nhân

$ python readings.py --max inflammation-*.csv 4

$ python readings.py --max inflammation-*.csv 5

$ python readings.py --max inflammation-*.csv 6$ python readings.py --max inflammation-*.csv 7

Sử dụng các tệp dữ liệu nhỏ làm đầu vào cũng cho phép chúng tôi kiểm tra kết quả của mình dễ dàng hơn. ở đây, ví dụ, chúng ta có thể thấy rằng chương trình của chúng ta đang tính toán giá trị trung bình một cách chính xác cho mỗi dòng, trong khi trước đó chúng ta đã thực sự tin tưởng vào nó. Đây là một quy tắc khác của lập trình. ""

Chúng tôi muốn chương trình của mình xử lý từng tệp riêng biệt, vì vậy chúng tôi cần một vòng lặp thực thi một lần cho mỗi tên tệp. Nếu chúng tôi chỉ định các tệp trên dòng lệnh, tên tệp sẽ ở dạng %run sys-version.py8, nhưng chúng tôi cần cẩn thận. %run sys-version.py9 sẽ luôn là tên của tập lệnh của chúng tôi, thay vì tên của tệp. Chúng tôi cũng cần xử lý một số lượng tên tệp không xác định, vì chương trình của chúng tôi có thể chạy cho bất kỳ số lượng tệp nào

Giải pháp cho cả hai vấn đề là lặp lại nội dung của $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 31. '1' báo cho Python bắt đầu lát ở vị trí 1, vì vậy tên của chương trình không được bao gồm; . Đây là chương trình đã thay đổi của chúng tôi

$ python readings.py --max inflammation-*.csv 8

$ python readings.py --max inflammation-*.csv 9

và đây là hành động

!cat sys-version.py0

!cat sys-version.py1

Ghi chú. tại thời điểm này, chúng tôi đã tạo ba phiên bản tập lệnh của mình có tên là $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 32, $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 33 và $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 34. Chúng tôi sẽ không làm điều này trong cuộc sống thực. thay vào đó, chúng tôi sẽ có một tệp tên là $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 20 mà chúng tôi cam kết kiểm soát phiên bản mỗi khi chúng tôi có một cải tiến đang hoạt động. Tuy nhiên, để giảng dạy, chúng tôi cần tất cả các phiên bản kế tiếp nhau

thử thách

  1. Viết chương trình có tên $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 36 lấy tên của một hoặc nhiều tệp dữ liệu viêm làm đối số và kiểm tra xem tất cả các tệp có cùng số hàng và số cột không. Cách tốt nhất để kiểm tra chương trình của bạn là gì?

Xử lý cờ dòng lệnh

Bước tiếp theo là hướng dẫn chương trình của chúng ta chú ý đến các cờ import sys print 'version is', sys.version 8, import sys print 'version is', sys.version 9 và %run sys-version.py0. Chúng luôn xuất hiện trước tên của các tệp, vì vậy chúng tôi chỉ có thể làm điều này

!cat sys-version.py2

!cat sys-version.py3

Những công việc này

!cat sys-version.py4

nhưng có một số điều sai với nó

  1. $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21 quá lớn để đọc thoải mái

  2. Nếu $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21 không phải là một trong ba cờ được công nhận, chương trình sẽ tải từng tệp nhưng không làm gì với nó (vì không có nhánh nào trong điều kiện khớp). như thế này luôn khó gỡ lỗi

Phiên bản này đưa quá trình xử lý của từng tệp ra khỏi vòng lặp thành một chức năng của riêng nó. Nó cũng kiểm tra xem $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21 có phải là một trong những cờ được phép trước khi thực hiện bất kỳ quá trình xử lý nào không, do đó chương trình bị lỗi nhanh

!cat sys-version.py5

!cat sys-version.py6

Đây là bốn dòng dài hơn so với người tiền nhiệm của nó, nhưng được chia thành các đoạn 8 và 12 dòng dễ tiêu hóa hơn

Python có một mô-đun tên là argparse giúp xử lý các cờ dòng lệnh phức tạp. Chúng tôi sẽ không đề cập đến mô-đun này trong bài học này nhưng bạn có thể xem hướng dẫn Argparse của Tshepang Lekhonkhobe, đây là một phần của Tài liệu chính thức của Python

thử thách

  1. Viết lại chương trình này để nó sử dụng $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 23, $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 24 và $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 25 thay vì import sys print 'version is', sys.version 8, import sys print 'version is', sys.version 9 và %run sys-version.py0 tương ứng. Mã có dễ đọc hơn không?

  2. Một cách riêng biệt, sửa đổi chương trình để nếu không có tham số nào được đưa ra (i. e. , không có hành động nào được chỉ định và không có tên tệp nào được đưa ra), nó sẽ in một thông báo giải thích cách sử dụng nó

  3. Một cách riêng biệt, sửa đổi chương trình để nếu không có hành động nào được đưa ra, nó sẽ hiển thị phương tiện của dữ liệu

Xử lý đầu vào tiêu chuẩn

Điều tiếp theo mà chương trình của chúng ta phải làm là đọc dữ liệu từ đầu vào tiêu chuẩn nếu không có tên tệp nào được cung cấp để chúng ta có thể đặt nó vào một đường dẫn, chuyển hướng đầu vào đến nó, v.v. Hãy thử nghiệm trong một kịch bản khác

!cat sys-version.py7

!cat sys-version.py8

Chương trình nhỏ này đọc các dòng từ một "tệp" đặc biệt có tên là $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 29, được tự động kết nối với đầu vào tiêu chuẩn của chương trình. Chúng ta không cần phải mở nó—Python và hệ điều hành sẽ lo việc đó khi chương trình khởi động—nhưng chúng ta có thể làm hầu hết mọi thứ với nó mà chúng ta có thể làm với một tệp thông thường. Hãy thử chạy nó như thể nó là một chương trình dòng lệnh thông thường

!cat sys-version.py9

import sys print 'version is', sys.version 0

Điều gì sẽ xảy ra nếu chúng tôi chạy nó bằng cách sử dụng %run sys-version.py3?

import sys print 'version is', sys.version 1

import sys print 'version is', sys.version 2

Như bạn có thể thấy, %run sys-version.py3 không hiểu chuyển hướng tệp. đó là một thứ vỏ

Một lỗi phổ biến là cố chạy thứ gì đó đọc từ đầu vào tiêu chuẩn như thế này

import sys print 'version is', sys.version 3

i. e. , để quên ký tự $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 92 chuyển hướng tệp sang đầu vào tiêu chuẩn. Trong trường hợp này, không có gì trong đầu vào tiêu chuẩn, vì vậy chương trình sẽ đợi ở đầu vòng lặp để ai đó gõ nội dung nào đó trên bàn phím. Vì không có cách nào để chúng tôi làm điều này, chương trình của chúng tôi bị kẹt và chúng tôi phải tạm dừng chương trình bằng cách sử dụng tùy chọn ________ 193 từ menu ________ 194 trong Notebook

Bây giờ chúng ta cần viết lại chương trình để nó tải dữ liệu từ $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 29 nếu không có tên tệp nào được cung cấp. May mắn thay, $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 96 có thể xử lý tên tệp hoặc tệp đang mở làm tham số đầu tiên của nó, vì vậy chúng tôi thực sự không cần thay đổi $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 97. Điều đó để lại $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 21

import sys print 'version is', sys.version 4

Hãy dùng thử (chúng ta sẽ thấy trong giây lát tại sao chúng ta gửi kết quả qua $ python readings.py --mean inflammation-01.csv 5.45 5.425 6.1 ... 6.4 7.05 5.9 99)

import sys print 'version is', sys.version 5

import sys print 'version is', sys.version 6

Rất tiếc. tại sao chúng tôi nhận được sự trợ giúp của IPython thay vì mức trung bình từng dòng của dữ liệu của chúng tôi? . Để làm cho ý nghĩa của chúng tôi rõ ràng, chúng tôi phải sử dụng $ head -4 inflammation-01.csv | python readings.py --min 00 (dấu gạch ngang kép) để phân tách hai

Làm cách nào để chạy IPython trong cmd?

Cách dễ nhất là chạy easy_install ipython[all] với tư cách quản trị viên ( nút bắt đầu, nhập cmd , shift+nhấp chuột phải vào “cmd. exe” và chọn “Chạy với tư cách quản trị viên” ). Điều này sẽ cài đặt phiên bản IPython ổn định mới nhất bao gồm các phụ thuộc chính bắt buộc và tùy chọn.

Mô-đun IPython là gì?

IPython cung cấp bộ công cụ phong phú giúp bạn tận dụng tối đa việc sử dụng Python một cách tương tác . Các thành phần chính của nó là. Shell Python tương tác mạnh mẽ. Hạt nhân Jupyter để hoạt động với mã Python trong sổ ghi chép Jupyter và các giao diện người dùng tương tác khác.

IPython và Jupyter có giống nhau không?

IPython Notebook hiện được gọi là Jupyter Notebook . Đó là một môi trường tính toán tương tác, trong đó bạn có thể kết hợp thực thi mã, văn bản đa dạng thức, toán học, sơ đồ và đa phương tiện. Để biết thêm chi tiết về Jupyter Notebook, vui lòng xem trang web Jupyter.

Phép thuật IPython là gì?

Các lệnh ma thuật hay phép thuật là các lệnh tiện dụng được tích hợp trong nhân IPython giúp dễ dàng thực hiện các tác vụ cụ thể , ví dụ: . IPython cung cấp hai loại phép thuật. ma thuật dòng và ma thuật tế bào.

Chủ đề