In không hoạt động trong Python

Có thể xảy ra trường hợp bạn thực thi một tập lệnh Python và không có gì xảy ra, tôi. e. có vẻ như nó "treo" mà không hiển thị bất kỳ đầu ra nào

Ngay cả khi bạn bao gồm rõ ràng một số câu lệnh

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
2 để gỡ lỗi sự cố, nó vẫn có thể không in bất cứ thứ gì ra thiết bị đầu cuối

Một trong những lý do tại sao tập lệnh Python của bạn không hiển thị bất kỳ đầu ra nào là vì nó lưu vào bộ đệm

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
3 và
# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
4 thay vì in chúng

Điều này cũng có thể xảy ra nếu bạn thực thi tập lệnh Python từ đường dẫn CI/CD [e. g. sử dụng Jenkins, Gitlab-CI, TeamCity, v.v. ] hoặc nếu bạn chạy nó bằng cách sử dụng

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
5

Ghi chú ngắn này cho biết cách giải quyết vấn đề khi tập lệnh Python “treo” và không hiển thị bất kỳ đầu ra nào

Mẹo hay. Cách kiểm tra phiên bản của gói Python. Đọc thêm →

Tập lệnh Python không hiển thị đầu ra

Để buộc các luồng

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
3 và
# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
4 gửi đầu ra của tập lệnh Python thẳng tới thiết bị đầu cuối [hoặc tệp nhật ký], bạn có thể đặt biến môi trường
# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
8 [thành bất kỳ giá trị nào khác với
# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
9] hoặc thực thi lệnh
# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
0 với tùy chọn
# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
1

Biến môi trường

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
8 có thể được đặt như sau

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]

Hoặc bạn chỉ cần chạy lệnh

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
0 với tùy chọn
# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
1

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]

Sau khi sử dụng bất kỳ phương pháp nào ở trên, tập lệnh Python của bạn sẽ bắt đầu in đầu ra

Mẹo hay. Cách liệt kê tất cả các mô-đun Python được cài đặt cục bộ và tìm đường dẫn đến tệp nguồn của chúng. Đọc thêm →

Hàm

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
2 in đối tượng đã cho tới thiết bị đầu ra tiêu chuẩn [màn hình] hoặc tới tệp luồng văn bản

Ví dụ

message = 'Python is fun'

# print the string message print[message]

# Output: Python is fun

in[] Cú pháp

Cú pháp đầy đủ của

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
2 là

print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]

in [] Tham số

  • đối tượng - đối tượng để in. * chỉ ra rằng có thể có nhiều hơn một đối tượng
  • sep - các đối tượng được phân tách bằng sep. Giá trị mặc định.
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    1
  • end - end được in cuối cùng
  • tệp - phải là một đối tượng có phương thức ghi [chuỗi]. Nếu bỏ qua,
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    2 sẽ được sử dụng để in các đối tượng trên màn hình
  • tuôn ra - Nếu Đúng, luồng bị buộc phải xóa. Giá trị mặc định.
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    3

Ghi chú. sep, end, file và flush là các đối số từ khóa. Nếu bạn muốn sử dụng đối số sep, bạn phải sử dụng

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
1

không phải

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
2

print[] Giá trị trả về

Nó không trả về bất kỳ giá trị nào;

ví dụ 1. Print[] hoạt động như thế nào trong Python?

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
3

đầu ra

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
4

Trong chương trình trên, chỉ có tham số đối tượng được truyền cho hàm

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
2 [trong cả ba câu lệnh in]

Vì thế,

  • Dấu phân cách
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    1 được sử dụng. Lưu ý khoảng cách giữa hai đối tượng trong đầu ra
  • tham số kết thúc
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    6 [ký tự dòng mới] được sử dụng. Lưu ý, mỗi câu lệnh in hiển thị đầu ra trong dòng mới
  • tập tin là
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    2. Đầu ra được in trên màn hình
  • tuôn ra là
    print[*objects, sep=' ', end='\n', file=sys.stdout, flush=False]
    3. Luồng không bị buộc phải tuôn ra

ví dụ 2. print[] với các tham số dấu phân cách và kết thúc

# Shell
$ python -u script.py

# Dockerfile
CMD [ "python", "-u", "script.py" ]
9

đầu ra

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
0

Chúng tôi đã chuyển các tham số sep và end trong chương trình trên

ví dụ 3. print[] với tham số tệp

Trong Python, bạn có thể in các đối tượng vào tệp bằng cách chỉ định tham số tệp

đề xuất đọc. I/O tệp Python

# Shell
$ export PYTHONUNBUFFERED=true
$ python script.py

# Dockerfile
ENV PYTHONUNBUFFERED=true
CMD [ "python", "script.py" ]
1

Chương trình này cố gắng mở python. txt ở chế độ viết. Nếu tệp này không tồn tại, python. txt được tạo và mở ở chế độ viết

Ở đây, chúng tôi đã chuyển đối tượng tệp sourceFile cho tham số tệp. Đối tượng chuỗi 'Khá tuyệt, huh. ' được in ra con trăn. txt [kiểm tra nó trong hệ thống của bạn]

Tại sao Python của tôi không in được?

Một trong những lý do tại sao tập lệnh Python của bạn không hiển thị bất kỳ đầu ra nào là vì nó đệm thiết bị xuất chuẩn và thiết bị xuất chuẩn thay vì in chúng . Điều này cũng có thể xảy ra nếu bạn thực thi tập lệnh Python từ đường dẫn CI/CD [e. g. sử dụng Jenkins, Gitlab-CI, TeamCity, v.v. ] hoặc nếu bạn chạy nó bằng Dockerfile.

Tại sao chức năng in của tôi không hoạt động?

Khôi phục cài đặt gốc trên máy in của bạn . Để thực hiện việc này, bạn chỉ cần tắt máy in, rút ​​phích cắm trong vài phút rồi cắm lại máy in. Nếu cách đó vẫn không hiệu quả, hãy thử tắt máy in và máy tính của bạn, sau đó khởi động lại máy in. Hãy thử gỡ cài đặt và sau đó cài đặt lại trình điều khiển máy in của bạn.

in [''] trong Python là gì?

Hàm print[] in thông báo đã chỉ định ra màn hình hoặc thiết bị đầu ra tiêu chuẩn khác . Thông báo có thể là một chuỗi, hoặc bất kỳ đối tượng nào khác, đối tượng sẽ được chuyển thành chuỗi trước khi ghi ra màn hình.

Tại sao câu lệnh in của tôi không in Python?

Hàm của bạn đang in dựa trên điều kiện của câu lệnh if . Hàm gọi "print[movie_review[9]] đang cố in giá trị trả về. Không có câu lệnh trả về, điều này mặc định là không có. Nó có thể được khắc phục bằng cách thêm một câu lệnh trả về trên mỗi câu lệnh có điều kiện và xóa bản in.

Chủ Đề