Tôi nhận được một tin nhắn nói script xyz.py returned exit code 0
. Điều đó có nghĩa là gì?
Các mã thoát trong Python có nghĩa là gì? Có bao nhiêu? Cái nào quan trọng?
T. Zengerink
4.2195 Huy hiệu vàng29 Huy hiệu bạc31 Huy hiệu Đồng5 gold badges29 silver badges31 bronze badges
Đã hỏi ngày 12 tháng 11 năm 2008 lúc 20:43Nov 12, 2008 at 20:43
2
Bạn đang tìm kiếm các cuộc gọi đến sys.exit[]
trong tập lệnh. Đối số cho phương thức đó được trả về môi trường dưới dạng mã thoát.
Có khả năng tập lệnh không bao giờ gọi phương thức thoát và 0 là mã thoát mặc định.
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 20:50Nov 12, 2008 at 20:50
Dave Costadave CostaDave Costa
46.5k8 Huy hiệu vàng56 Huy hiệu bạc71 Huy hiệu đồng8 gold badges56 silver badges71 bronze badges
3
Từ tài liệu cho
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
0:Đối số tùy chọn ARG có thể là một số nguyên cho trạng thái thoát [mặc định về 0] hoặc loại đối tượng khác. Nếu đó là một số nguyên, Zero được coi là chấm dứt thành công và bất kỳ giá trị khác nào được coi là kết thúc bất thường của các vỏ và tương tự. Hầu hết các hệ thống yêu cầu nó nằm trong phạm vi 0-127 và tạo ra kết quả không xác định khác. Một số hệ thống có một quy ước để gán ý nghĩa cụ thể cho các mã thoát cụ thể, nhưng chúng thường kém phát triển; Các chương trình UNIX thường sử dụng 2 cho lỗi cú pháp dòng lệnh và 1 cho tất cả các loại lỗi khác.
Một ví dụ trong đó các mã thoát được sử dụng trong các tập lệnh shell. Trong bash, bạn có thể kiểm tra biến đặc biệt
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
1 cho trạng thái thoát cuối cùng:me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit[0]"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit[43]"; echo $?
43
Cá nhân tôi cố gắng sử dụng các mã thoát mà tôi tìm thấy trong
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
2 [trên hệ thống Linux], nhưng tôi không biết đây có phải là điều đúng đắn không.
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 21:31Nov 12, 2008 at 21:31
EigireigirEigir
1.8992 Huy hiệu vàng14 Huy hiệu bạc19 Huy hiệu đồng2 gold badges14 silver badges19 bronze badges
4
Đối với hồ sơ, bạn có thể sử dụng mã thoát tiêu chuẩn POSIX được xác định ở đây.
Example:
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
Đã trả lời ngày 11 tháng 6 năm 2015 lúc 8:53Jun 11, 2015 at 8:53
Laffustelaffustelaffuste
15,5K7 Huy hiệu vàng79 Huy hiệu bạc88 Huy hiệu đồng7 gold badges79 silver badges88 bronze badges
4
Có một mô -đun
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
3 xác định mã thoát tiêu chuẩn:Ví dụ: quyền bị từ chối là mã lỗi 13:Permission denied is error code 13:
import errno, sys
if can_access_resource[]:
do_something[]
else:
sys.exit[errno.EACCES]
Asclepius
52.9K16 Huy hiệu vàng154 Huy hiệu bạc137 Huy hiệu đồng16 gold badges154 silver badges137 bronze badges
Đã trả lời ngày 13 tháng 11 năm 2008 lúc 7:32Nov 13, 2008 at 7:32
OlioliOli
14.8k8 Huy hiệu vàng30 Huy hiệu bạc36 Huy hiệu đồng8 gold badges30 silver badges36 bronze badges
3
Mã thoát của 0 thường có nghĩa là "Không có gì sai ở đây." Tuy nhiên, nếu lập trình viên của tập lệnh không tuân theo quy ước, bạn có thể phải tham khảo nguồn để xem ý nghĩa của nó. Thông thường một giá trị khác không được trả về dưới dạng mã lỗi.
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 20:46Nov 12, 2008 at 20:46
SAM CORDERSAM CORDERSam Corder
5.3223 Huy hiệu vàng24 Huy hiệu bạc 30 Huy hiệu Đồng3 gold badges24 silver badges30 bronze badges
Câu trả lời là "phụ thuộc vào mã thoát có nghĩa là gì".
Tuy nhiên, trong hầu hết các trường hợp, điều này có nghĩa là "mọi thứ đều ổn".
Tôi thích Posix:
Vì vậy, trong vỏ, tôi sẽ gõ:
python script.py && echo 'OK' || echo 'Not OK'
Nếu tập lệnh Python của tôi gọi
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
4, shell sẽ trả về 'ok'Nếu tập lệnh Python của tôi gọi
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
5 [hoặc bất kỳ số nguyên khác không], shell sẽ trả về 'không ổn'.Công việc của bạn là thông minh với vỏ và đọc tài liệu [hoặc nguồn] cho tập lệnh của bạn để xem mã thoát có nghĩa là gì.
Đã trả lời ngày 24 tháng 1 năm 2017 lúc 18:22Jan 24, 2017 at 18:22
FlipMcfflipMCFFlipMcF
12.4K2 Huy hiệu vàng34 Huy hiệu bạc44 Huy hiệu đồng2 gold badges34 silver badges44 bronze badges
1
Sau mã thoát UNIX 0 - Để thành công / OK, 1 - Không thành công / lỗi. Bạn có thể chỉ cần sử dụng cuộc gọi
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
6 hoặc import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
7 mà không cần nhập mô -đun import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
8.0 - for success / OK, 1 - non success / error. You could simply use import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
6 or import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
7 call without importing import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
8 module.
Đã trả lời ngày 2 tháng 7 năm 2020 lúc 12:06Jul 2, 2020 at 12:06
Lukasz Dynowskilukasz DynowskiLukasz Dynowski
9,5236 huy hiệu vàng68 Huy hiệu bạc106 Huy hiệu đồng6 gold badges68 silver badges106 bronze badges
1
Nếu bạn muốn sử dụng mã thoát POSIX tiêu chuẩn, hãy xem gói
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
9 trên PYPI.Cài đặt gói:
$ pip install exitstatus
Sử dụng trong mã của bạn:
import sys
from exitstatus import ExitStatus
sys.exit[ExitStatus.success]
Đã trả lời ngày 10 tháng 6 năm 2016 lúc 21:17Jun 10, 2016 at 21:17
Phoenixphoenixphoenix
6.7384 Huy hiệu vàng37 Huy hiệu bạc44 Huy hiệu đồng4 gold badges37 silver badges44 bronze badges
Các mã thoát chỉ có ý nghĩa như được gán bởi tác giả tập lệnh. Truyền thống Unix là mã thoát 0 có nghĩa là 'thành công', bất cứ điều gì khác là thất bại. Cách duy nhất để chắc chắn rằng mã thoát cho một tập lệnh nhất định có nghĩa là kiểm tra chính tập lệnh.
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 20:46Nov 12, 2008 at 20:46
SAM CORDERSAM CORDERHarper Shelby
5.3223 Huy hiệu vàng24 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges43 silver badges51 bronze badges
Câu trả lời là "phụ thuộc vào mã thoát có nghĩa là gì".
Tuy nhiên, trong hầu hết các trường hợp, điều này có nghĩa là "mọi thứ đều ổn".
Tôi thích Posix:
Vì vậy, trong vỏ, tôi sẽ gõ:should not be used in programs.
Then:
exit[code=None]
Nếu tập lệnh Python của tôi gọi
4, shell sẽ trả về 'ok'import sys, os try: config[] except: sys.exit[os.EX_CONFIG] try: do_stuff[] except: sys.exit[os.EX_SOFTWARE] sys.exit[os.EX_OK] # code 0, all ok
Nếu tập lệnh Python của tôi gọi
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
5 [hoặc bất kỳ số nguyên khác không], shell sẽ trả về 'không ổn'.
Công việc của bạn là thông minh với vỏ và đọc tài liệu [hoặc nguồn] cho tập lệnh của bạn để xem mã thoát có nghĩa là gì.
Đã trả lời ngày 24 tháng 1 năm 2017 lúc 18:2235 gold badges176 silver badges248 bronze badges
Đã trả lời ngày 12 tháng 2 năm 2018 lúc 14:41Feb 12, 2018 at 14:41
yếuCamelweakcamelweakcamel
611 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges
Các lệnh hệ điều hành có mã thoát. Tìm kiếm mã thoát Linux để xem một số tài liệu về điều này. Shell sử dụng mã thoát để quyết định xem chương trình có hoạt động hay không, hoặc không thành công. Có một số nỗ lực để tạo mã thoát tiêu chuẩn [hoặc ít nhất là thường được sử dụng]. Xem bài đăng kịch bản shell nâng cao này.
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 23:12Nov 12, 2008 at 23:12
S.LottS.LottS.Lott
378K79 Huy hiệu vàng503 Huy hiệu bạc773 Huy hiệu Đồng79 gold badges503 silver badges773 bronze badges
Mã thoát trong nhiều ngôn ngữ lập trình là tùy thuộc vào các lập trình viên. Vì vậy, bạn phải xem mã nguồn chương trình của bạn [hoặc hướng dẫn sử dụng]. Zero thường có nghĩa là "mọi thứ đều ổn".
Đã trả lời ngày 12 tháng 11 năm 2008 lúc 20:48Nov 12, 2008 at 20:48
DavidedavideDavide
16.6K11 Huy hiệu vàng50 Huy hiệu bạc67 Huy hiệu đồng11 gold badges50 silver badges67 bronze badges
Giải pháp thay thế: Để đối mặt với lỗi trong Gitlab-CI [//gitlab.com/gitlab-org/gitlab-runner/-/issues/27668], tôi chỉ cần tạo một tệp có mã lỗi:
Python phần:
with open["error_code.log", 'w'] as file:
file.write['2'] # this will trigger a warning
Và sau đó trong tệp YML:
.step_name:
variables:
# my vars
script:
- python my_code.py arg1 arg2
- exit `cat error_code.log`
allow_failure:
exit_codes:
- 2
Đã trả lời ngày 3 tháng 11 lúc 12:39Nov 3 at 12:39
Để cho phép các trình xử lý ngoại lệ và những thứ khác thực hiện, tôi khuyên bạn nên tắt máy với
import sys, os
try:
config[]
except:
sys.exit[os.EX_CONFIG]
try:
do_stuff[]
except:
sys.exit[os.EX_SOFTWARE]
sys.exit[os.EX_OK] # code 0, all ok
6 được tích hợp thay vì sử dụng sys.exit[]
kết thúc quá trình một cách đột ngột.Đã trả lời ngày 10 tháng 3 năm 2017 lúc 13:12Mar 10, 2017 at 13:12
Vidstigevidstigevidstige
12.1k8 Huy hiệu vàng66 Huy hiệu bạc107 Huy hiệu Đồng8 gold badges66 silver badges107 bronze badges
4