Con trăn 2to3

2to3 là ​​một chương trình Python đọc Python 2. x và áp dụng một loạt trình sửa lỗi để biến nó thành Python 3 hợp lệ. mã x. Thư viện tiêu chuẩn chứa một bộ sửa lỗi phong phú sẽ xử lý hầu hết tất cả mã. Tuy nhiên, thư viện hỗ trợ 2to3 là ​​một thư viện linh hoạt và chung chung, vì vậy bạn có thể viết các trình sửa lỗi của riêng mình cho 2to3. cũng có thể được điều chỉnh cho các ứng dụng tùy chỉnh trong đó mã Python cần được chỉnh sửa tự động

Sử dụng 2to3

2to3 thường sẽ được cài đặt với trình thông dịch Python dưới dạng tập lệnh. Nó cũng nằm trong thư mục gốc của Python

Đối số cơ bản của 2to3 là ​​danh sách các tệp hoặc thư mục cần chuyển đổi. Các thư mục được duyệt qua đệ quy cho các nguồn Python

Đây là một mẫu Python 2. tệp nguồn x,

def greet[name]:
    print "Hello, {0}!".format[name]
print "What's your name?"
name = raw_input[]
greet[name]

Nó có thể được chuyển đổi thành Python 3. xcode qua 2 đến 3 trên dòng lệnh

$ 2to3 example.py

Một sự khác biệt so với tệp nguồn ban đầu được in. 2to3 cũng có thể ghi ngay các sửa đổi cần thiết vào tệp nguồn. [Một bản sao lưu của tệp gốc được thực hiện trừ khi cũng được cung cấp. ] Ghi lại các thay đổi được kích hoạt bằng cờ

$ 2to3 -w example.py

Sau khi chuyển đổi, trông như thế này

def greet[name]:
    print["Hello, {0}!".format[name]]
print["What's your name?"]
name = input[]
greet[name]

Nhận xét và thụt đầu dòng chính xác được giữ nguyên trong suốt quá trình dịch thuật

Theo mặc định, 2to3 chạy một bộ. Cờ liệt kê tất cả các trình sửa lỗi có sẵn. Có thể cung cấp một bộ sửa lỗi rõ ràng để chạy với. Tương tự như vậy, vô hiệu hóa một cách rõ ràng một trình sửa lỗi. Ví dụ sau chỉ chạy bộ sửa lỗi

$ 2to3 -x apply example.py
7 và
$ 2to3 -x apply example.py
8

$ 2to3 -f imports -f has_key example.py

Lệnh này chạy mọi trình sửa lỗi ngoại trừ trình sửa lỗi

$ 2to3 -x apply example.py
9

$ 2to3 -x apply example.py

Một số trình sửa lỗi rõ ràng, nghĩa là chúng không được chạy theo mặc định và phải được liệt kê trên dòng lệnh để được chạy. Tại đây, ngoài các trình sửa lỗi mặc định, trình sửa lỗi

$ 2to3 -f all -f idioms example.py
0 được chạy

$ 2to3 -f all -f idioms example.py

Lưu ý cách chuyển

$ 2to3 -f all -f idioms example.py
1 cho phép tất cả các trình sửa lỗi mặc định

Đôi khi 2to3 sẽ tìm thấy một chỗ trong mã nguồn của bạn cần thay đổi, nhưng 2to3 không thể tự động sửa. Trong trường hợp này, 2to3 sẽ in cảnh báo bên dưới diff cho một tệp. Bạn nên giải quyết cảnh báo để tuân thủ 3. mã x

2to3 cũng có thể cấu trúc lại doctests. Để bật chế độ này, hãy sử dụng cờ. Lưu ý rằng chỉ doctests sẽ được cấu trúc lại. Điều này cũng không yêu cầu mô-đun phải là Python hợp lệ. Ví dụ: các ví dụ giống như doctest trong tài liệu reST cũng có thể được cấu trúc lại với tùy chọn này

Tùy chọn cho phép xuất thêm thông tin về quá trình dịch thuật

Vì một số câu lệnh in có thể được phân tích thành lời gọi hàm hoặc câu lệnh, 2to3 không phải lúc nào cũng có thể đọc các tệp chứa hàm in. Khi 2to3 phát hiện sự hiện diện của chỉ thị trình biên dịch

$ 2to3 -f all -f idioms example.py
2, nó sẽ sửa đổi ngữ pháp bên trong của nó để diễn giải thành một hàm. Thay đổi này cũng có thể được kích hoạt thủ công với cờ. Sử dụng để chạy các trình sửa lỗi trên mã đã được chuyển đổi câu lệnh in của nó

Tùy chọn hoặc cho phép đặc điểm kỹ thuật của một thư mục thay thế cho các tệp đầu ra đã xử lý được ghi vào. Cờ được yêu cầu khi sử dụng vì các tệp sao lưu không có ý nghĩa khi không ghi đè lên các tệp đầu vào

. versionadded:: 2.7.3
   The :option:`-o` option was added.

Cờ hoặc yêu cầu 2to3 luôn ghi các tệp đầu ra ngay cả khi không có thay đổi nào được yêu cầu đối với tệp. Điều này hữu ích nhất khi sao chép toàn bộ cây nguồn Python với bản dịch từ thư mục này sang thư mục khác. Tùy chọn này ngụ ý lá cờ vì nó sẽ không có ý nghĩa gì khác

. versionadded:: 2.7.3
   The :option:`-W` flag was added.

Tùy chọn chỉ định một chuỗi để nối vào tất cả các tên tệp đầu ra. Cần có cờ khi chỉ định điều này vì không cần sao lưu khi ghi vào các tên tệp khác nhau. Ví dụ

def greet[name]:
    print "Hello, {0}!".format[name]
print "What's your name?"
name = raw_input[]
greet[name]
0

Sẽ khiến một tệp đã chuyển đổi có tên

$ 2to3 -f all -f idioms example.py
3 được ghi

def greet[name]:
    print "Hello, {0}!".format[name]
print "What's your name?"
name = raw_input[]
greet[name]
1

Để dịch toàn bộ dự án từ cây thư mục này sang cây thư mục khác, hãy sử dụng

def greet[name]:
    print "Hello, {0}!".format[name]
print "What's your name?"
name = raw_input[]
greet[name]
2

người sửa lỗi

Mỗi bước chuyển đổi mã được gói gọn trong một trình sửa lỗi. Lệnh

$ 2to3 -f all -f idioms example.py
4 liệt kê chúng. Vì, mỗi cái có thể được bật và tắt riêng lẻ. Chúng được mô tả ở đây chi tiết hơn

2to3 Python là gì?

2to3 là ​​ một chương trình Python đọc Python 2. x mã nguồn và áp dụng một loạt các trình sửa lỗi để biến nó thành Python 3 hợp lệ. mã x . Thư viện tiêu chuẩn chứa một bộ sửa lỗi phong phú sẽ xử lý hầu hết tất cả mã.

Làm cách nào để nhập 2to3 trong Python 3?

Để chuyển đổi mã python 2 nhất định thành python 3, hãy chuyển đến dấu nhắc lệnh của bạn, thay đổi thư mục thành C. /Program Files/Python36/Tools/scripts nơi tìm thấy tệp 2to3. Sau đó thêm lệnh sau. trăn 2to3. py -w [thư mục tới tập lệnh của bạn]

Python 2 có thể chuyển đổi thành 3 không?

Chúng tôi có thể chuyển đổi tập lệnh Python2 thành tập lệnh Python3 bằng cách sử dụng mô-đun 2to3 . Nó thay đổi cú pháp Python2 thành cú pháp Python3. Chúng tôi có thể thay đổi tất cả các tệp trong một thư mục cụ thể từ python2 thành python3.

Làm cách nào để sử dụng Python2 và Python3?

Vì vậy, để có thể sử dụng nhiều phiên bản Python. .
cài đặt Python 2. x [x là bất kỳ phiên bản nào bạn cần]
cài đặt Python3. x [x là bất kỳ phiên bản nào bạn cần, bạn cũng phải có một phiên bản 3. x >= 3. 3]
mở Dấu nhắc lệnh
gõ py -2. x để khởi chạy Python 2. x
gõ py -3. x để khởi chạy Python 3. x

Chủ Đề