Khi sử dụng optparse tôi muốn nhận được toàn bộ chuỗi sau một tùy chọn, nhưng tôi chỉ nhận được một phần của nó lên đến không gian đầu tiên.Không gian và không gian Python trong một đối số
ví dụ .:
python myprog.py --executable python someOtherProg.py
Những gì tôi nhận được trong 'thực thi' chỉ là 'trăn'.
Có thể phân tích các dòng đó bằng cách sử dụng optparse hoặc bạn có phải sử dụng argparse để làm điều đó không?
€:. Tôi đã cố gắng bao quanh nó trong "s Nhưng sau khi đào sâu hơn vào đoạn code tôi phát hiện ra rằng gọi subprocess không thể xử lý đối số
Chuỗi với dòng lệnh được nhồi nhét vào một. danh sách 'args'.
args = [self.getExecutable()] + self.getArgs().split()
Nó giống như
"[python D:\\\workspace\\\myprog\\\src\\\myprog.py]"
Điều đó mang lại cho tôi những hệ thống không thể tìm thấy tập tin ngoại lệ. Khi tôi sử dụng
args[0]
hoạt động. Nhưng tôi mất các đối số để thực thi.
Mô-đun xử lý con xây dựng một cmdline từ danh sách nếu nó không nhận được chuỗi ở địa điểm đầu tiên, vì vậy tôi không thể giải thích hành vi đó vào lúc này.
Chuẩn bị để được ngạc nhiên: dưới Python 3.5, một không gian thoát được unescaped bởi sys.argv! Trong C, chúng ta có 'python ngớ ngẩn': 'argv [1]' = '" python "', 'argv [2]' = '" một số "'. "ngớ ngẩn" python một số "': 'argv [1]' = '" python một số "'. Và 'ngớ ngẩn python \ some':' argv [1] '=' "python một số" '. Nhưng với Python 3.5 chúng ta có 'silly.py python some':' argv [1] '=' "python" ',' argv [2] '=' "một số" '. 'silly.py" python một số "': 'argv [1]' = '" python một số "'. Và 'silly.py python \ some':' argv [1] '=' "python \\" ',' "một số" '. Kinh ngạc! – Urhixidur