2013-02-27 11 views
5

Tôi đang viết một máy khách và máy chủ Python đơn giản, hoạt động tốt qua địa chỉ máy chủ trong mã của tôi, tuy nhiên, tôi muốn người dùng có thể nhập địa chỉ máy chủ và ném và lỗi nếu không chính xác. Khi tôi có mã dưới đây tôi nhận được một thông báo lỗi từ thiết bị đầu cuối "danh sách chỉ mục ra khỏi phạm vi"."danh sách chỉ mục ngoài phạm vi" khi sử dụng sys.argv [1]

server = (sys.argv[1]) 
serverAdd = (server, '65652') # server address and port number 

Bất kỳ ai cũng có thể giúp tôi với điều này.

Khi tôi chạy chương trình máy khách trong python, tôi muốn có thể nhập địa chỉ để kết nối và lưu trữ địa chỉ đó trong máy chủ. Tôi chạy chương trình trực tiếp từ dòng lệnh bằng cách gõ programname.py. Máy chủ đang chạy nghe cho các kết nối đến.

+2

Và bạn đang gọi nó như thế nào? – kindall

+0

là ở trên không phải là một cuộc gọi dòng lệnh? – user1978826

+0

Bạn có thể thử in danh sách để đảm bảo có gì đó ở đó. 'print (sys.argv)' –

Trả lời

12

Với Python này:

import sys 

print(sys.argv) 

Và gọi với lệnh này:

>python q15121717.py 127.0.0.1 

tôi nhận được kết quả này:

['q15121717.py', '127.0.0.1'] 

Tôi nghĩ rằng bạn đang không đi qua một đối số cho bạn Tập lệnh Python

Bây giờ bạn có thể thay đổi mã của bạn một chút để có một mẫu máy chủ dòng lệnh hoặc nhắc cho một máy chủ khi không có gì được thông qua. Trong trường hợp này, bạn sẽ nhìn vào một cái gì đó như thế này:

if len(sys.argv) > 1: 
    print(sys.argv[1]) 
else: 
    print(input("Enter address:")) 
+0

Tôi nghĩ rằng quyền của bạn. Tôi đang viết trong suy nghĩ rằng sys.argv [1] sẽ là yếu tố thứ hai vv ...... vì vậy trong trường hợp trên sys.argv ['127.0.0.1'] – user1978826

+0

Cảm ơn sự giúp đỡ :) –