Hướng dẫn how do you pass a string with spaces as an argument in python? - làm cách nào để bạn chuyển một chuỗi có dấu cách làm đối số trong python?

18

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào để chạy một con trăn với các đối số sẽ chứa khoảng trống? Tôi đang sử dụng macOS

Ví dụ,

>python testProgram.py argument 1 argument 2

Trường hợp "Đối số 1" là một đối số duy nhất?

Hỏi ngày 10 tháng 8 năm 2012 lúc 2:51Aug 10, 2012 at 2:51

0

trong đó "Đối số 1" là một đối số duy nhất.

Về cơ bản, bạn đã trả lời câu hỏi của riêng bạn ở đó,

python testProgram.py "argument 1" 'argument 2'
4 thực sự là một đối số duy nhất.

Nói cách khác, bạn cần trích dẫn nó, một cái gì đó giống như một trong số:

python testProgram.py "argument 1" 'argument 2'

Đây thực sự không phải là vấn đề Python, tuy nhiên, nó phụ thuộc vào vỏ mà bạn đang sử dụng để chạy tập lệnh Python.

Ví dụ, với

python testProgram.py "argument 1" 'argument 2'
5, có sự khác biệt giữa các trích dẫn đơn và đôi, trong đó quan trọng nhất có lẽ là các bản mở rộng khác nhau như
python testProgram.py "argument 1" 'argument 2'
6 - biến thể được trích dẫn đơn không thực hiện các bản mở rộng đó.

Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:56Aug 10, 2012 at 2:56

Paxdiablopaxdiablopaxdiablo

828K227 Huy hiệu vàng1550 Huy hiệu bạc1918 Huy hiệu đồng227 gold badges1550 silver badges1918 bronze badges

3

Kèm theo các tham số của bạn có chứa khoảng trắng có dấu ngoặc kép

> python testProgram.py "argument 1" "argument 2"

Điều này sẽ hoạt động trong Windows và Linux vì vậy rất có thể nó cũng sẽ ổn trong Mac OS.

Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:54Aug 10, 2012 at 2:54

LevonlevonLevon

Huy hiệu vàng 133K3333 gold badges198 silver badges187 bronze badges

Hoặc sử dụng

python testProgram.py "argument 1" 'argument 2'
7 từ bên trong Python:

subprocess.call[['python','testProgram.py','argument 1','argument 2']]

Nhưng các câu trả lời khác có nhiều khả năng là những gì bạn muốn.

Đã trả lời ngày 10 tháng 8 năm 2012 lúc 3:04Aug 10, 2012 at 3:04

Mgilsonmgilsonmgilson

289K60 Huy hiệu vàng607 Huy hiệu bạc676 Huy hiệu Đồng60 gold badges607 silver badges676 bronze badges

Try:

>python testProgram.py "argument 1" "argument 2"

Đã trả lời ngày 10 tháng 8 năm 2012 lúc 2:53Aug 10, 2012 at 2:53

ChipjustchipjustChipJust

1.36812 Huy hiệu bạc20 Huy hiệu đồng12 silver badges20 bronze badges

Tôi gặp khó khăn trong việc truyền một số biến chuỗi có khoảng trống trong đó làm đối số cho một chương trình. Để gỡ lỗi và hiển thị các đối số được thông qua, tôi đã tạo một tập lệnh python demo -:
For debugging and showing the arguments being passed, I created a demo Python script -:

##### show_args.py #####

import sys

def main[]:
    # Display the arguments passed to the script
    print "Number of arguments =", len[sys.argv]
    for arg in sys.argv:
        print arg

if __name__ == '__main__':
    main[]

Bây giờ, tập lệnh thể hiện vấn đề -:

path_with_spaces="$HOME/blah blah"
arg_list="$path_with_spaces/abc $path_with_spaces/xyz"

python show_args.py $arg_list

Đầu ra -:

Number of arguments = 5
show_args.py
/home/anmol/blah
blah/abc
/home/anmol/blah
blah/xyz

Điều tôi thực sự muốn là thế này -:

path_with_spaces="$HOME/blah blah"

python show_args.py "$path_with_spaces/abc" "$path_with_spaces/xyz"

Đầu ra -:

Number of arguments = 3
show_args.py
/home/anmol/blah blah/abc
/home/anmol/blah blah/xyz

Điều tôi thực sự muốn là thế này -:

python testProgram.py "argument 1" 'argument 2'
0

Đầu ra -:

python testProgram.py "argument 1" 'argument 2'
1

Điều tôi thực sự muốn là thế này -:
The script showing this new approach -:

python testProgram.py "argument 1" 'argument 2'
2

Đầu ra -:

Number of arguments = 3
show_args.py
/home/anmol/blah blah/abc
/home/anmol/blah blah/xyz

Điều tôi thực sự muốn là thế này -:I still want to know if there is a way with which we can accomplish the same thing using a string variable rather an array variable.

Để xác nhận rằng vấn đề chỉ xảy ra đối với các đường dẫn có khoảng trắng trong đó, tôi đã tạo tập lệnh sau -:

  • Trong khi tìm kiếm các giải pháp cho vấn đề này, tôi đã gặp phải câu trả lời này, theo đó cách chính xác là đặt các đối số vào một biến mảng thay vì biến chuỗi. Kịch bản hiển thị cách tiếp cận mới này -:
  • Mặc dù, giải pháp này đang hoạt động chính xác, tôi vẫn muốn biết liệu có cách nào chúng ta có thể hoàn thành điều tương tự bằng cách sử dụng biến chuỗi thay vì biến mảng.
  • Cấu hình hệ thống của tôi -:

Làm thế nào để bạn chuyển các đối số với không gian cho một tập lệnh shell?

Các đối số có thể được chuyển đến tập lệnh khi nó được thực thi, bằng cách viết chúng dưới dạng danh sách được phân phối không gian theo tên tệp tập lệnh.Bên trong tập lệnh, biến $ 1 tham chiếu đối số đầu tiên trong dòng lệnh, $ 2 đối số thứ hai và vv.Biến $ 0 tham chiếu đến tập lệnh hiện tại.by writing them as a space-delimited list following the script file name. Inside the script, the $1 variable references the first argument in the command line, $2 the second argument and so forth. The variable $0 references to the current script.

Làm thế nào để bạn vượt qua một cuộc tranh luận trong Python?

Thông tin có thể được truyền vào các chức năng như đối số.Đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn.Bạn có thể thêm nhiều đối số như bạn muốn, chỉ cần tách chúng bằng dấu phẩy.Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.

Làm thế nào để bạn vượt qua một danh sách dưới dạng đối số dòng lệnh trong Python?

Làm việc với dòng lệnh: Hãy xem xét mã dưới đây được viết trong cmdlis.py.nhập khẩu sys.In ["Tên của chương trình là", sys.argv [0]] ....
Gọi một danh sách bằng dòng lệnh.nhập khẩu sys.....
Làm việc với danh sách được gọi bằng dòng lệnh.sys.....
Làm việc với nhiều danh sách được truy xuất thông qua dòng lệnh.Nhập SYS ..

Bài Viết Liên Quan

Chủ Đề