버전 2.6 또는 2.7에서만 실행되는 스크립트를 작성했습니다. 다른 버전이 설치되어 있는지 확인하고 사용 가능한 호환 버전이 있는지 확인하기 위해 안전성 검사를 실시했습니다. 다음은 제 코드입니다.왜 파이썬 2.4는 내 종료 기능을 계속 무시합니까?
# !/usr/bin/python
import sys, os, re
from sys import exit
if sys.version[0:3] in ['2.6', '2.7']:
import subprocess, datetime, os.path, json, urllib2, socket
def python_version():
version = sys.version[0:3]
while version not in ['2.6', '2.7']:
print '\n\nYou\'re using an incompatible version of Python (%s)' % version
python_installed_version = []
for files in os.listdir("/usr/bin/"): # check to see version of python already on the box
python_version = re.search("(python2(.+?)[6-7]$)", files)
if python_version:
python_installed_version.append(python_version.group())
if python_installed_version:
print 'Fortunately there are compatible version(s) installed. Try the following command(s): \n\n',
for version in python_installed_version:
print 'curl http://script.py | %s\n' % version
sys.exit()
python_version()
with p.stdout:
print 'hello'
위의 내용을 Python 2.4에서 실행할 때이 오류가 발생합니다.
File "<stdin>", line 46
with p.stdout:
^
SyntaxError: invalid syntax
당신이 sys.exit()
와 파이썬 2.4을 사용하고 있음을 감지, 대신 스크립트를 읽고 수행하고 with p.stout:
이 어디 위의 오류를주기 때문에 스크립트가 즉시 종료되지 않는 이유를 이해가 안 돼요 독서.
with p.stdout:
행을 제거 했으므로 정상적으로 작동하며 print 'hello'
을 읽을 수 없습니다. with p.stdout:
이 스크립트를 중단시키는 이유가 무엇인지 모르겠습니다. 이것은 2.6과 2.7에서 완벽하게 작동합니다.
python 2.4가 여전히 with p.stdout:
행을 읽는 이유에 대한 아이디어가 있습니까? 감사.
체크 파일과 실제 스크립트 파일의 두 파일을 사용하지 않아도되는 방법이 있습니까? 이 스크립트를 클라이언트 상자에서 실행하고 곱슬 곱슬 함을 사용하여 실제로 두 파일을 다운로드하지 않고 스크립트를 실행해야합니다. ( – user1165419
@ user1165419'with '를 사용하지 않도록 코드를 다시 작성할 수 있습니다. 결국 문법 설탕 일 뿐이므로 수동으로 리소스를 열고 닫아야합니다 (catch해야하는 모든 예외에 대해 기억하십시오). – viraptor
스크립트 옵션 가져 오기에 대해 궁금합니다. 스크립트를 실행하기 위해 컬을 사용합니다. 'curl http://main_script.py | python'. 인터넷을 통해 스크립트를 가져올 수 있습니까? 즉, 'curl check_version_script.py'를 할 수 있고,'import actual_app' 대신 뭔가를 사용할 수 있습니다. 'import http : // main_script.py'처럼 모든 파일을 다운로드 할 필요없이 인터넷을 통해 이루어집니다. 내 문제를 해결할 수 있습니다. – user1165419