Hướng dẫn pass variable from shell script to python - chuyển biến từ shell script sang python

Tôi có một kịch bản shell có lệnh để chạy tập lệnh Python. Tôi muốn 4 biến [cho ví dụ: var1, var2, var3, var4] từ tập lệnh shell được sử dụng trong tập lệnh Python. Bất kỳ đề xuất làm thế nào để làm điều này?

Ví dụ: Tôi muốn thay thế "lastTest44", firstTest44A-S00000582 bằng các biến từ tập lệnh shell.

driver.find_element_by_id["findKey_input"].clear[] 
driver.find_element_by_id["findKey_input"].send_keys["lastTest44"] 
driver.find_element_by_id["ST_View_lastTest44, firstTest44"].click[] 
driver.find_element_by_link_text["A-S00000582"].click[] 

Savanto

4.43022 Huy hiệu bạc40 Huy hiệu đồng22 silver badges40 bronze badges

Đã hỏi ngày 5 tháng 6 năm 2014 lúc 1:22Jun 5, 2014 at 1:22

3

Chỉ cần sử dụng các đối số dòng lệnh:

Kịch bản Shell

a=1
b=2
python test1.py "$a" "$b"

Kịch bản Python

import sys
var1 = sys.argv[1]
var2 = sys.argv[2]
print var1, var2

Đã trả lời ngày 5 tháng 6 năm 2014 lúc 1:33Jun 5, 2014 at 1:33

Oogaogaooga

15.3k2 Huy hiệu vàng19 Huy hiệu bạc21 Huy hiệu đồng2 gold badges19 silver badges21 bronze badges

1

Những gì bạn đang tìm kiếm để sử dụng được gọi là đối số dòng lệnh. Đây là các tham số được chỉ định tại thời điểm gọi đoạn mã cụ thể mà bạn đang muốn chạy.

Trong Python, chúng có thể truy cập thông qua mô -đun

a=1
b=2
python test1.py "$a" "$b"
0 theo một biến gọi là
a=1
b=2
python test1.py "$a" "$b"
1. Đây là một mảng của tất cả các đối số được truyền từ người gọi, trong đó mỗi giá trị trong mảng là một chuỗi.

Ví dụ: giả sử mã tôi đang viết có các tham số để vẽ một hình vuông. Điều này có thể yêu cầu 4 tham số - tọa độ x, tọa độ y, chiều rộng và chiều cao. Mã Python cho điều này có thể trông như thế này:

import sys
x = sys.argv[1]
y = sys.argv[2]
width = sys.argv[3]
height = sys.argv[4]

# Some more code follows.

Một vài điều cần lưu ý:

  1. Mỗi đối số là loại
    a=1
    b=2
    python test1.py "$a" "$b"
    
    2. Điều này có nghĩa là trong trường hợp này, tôi không thể thực hiện bất kỳ loại số học nào cho đến khi chuyển đổi chúng thành các loại chính xác mà tôi muốn.
  2. Đối số đầu tiên trong
    a=1
    b=2
    python test1.py "$a" "$b"
    
    3 là tên của tập lệnh đang được chạy. Bạn sẽ muốn đảm bảo rằng bạn bắt đầu đọc từ vị trí thứ hai trong mảng
    a=1
    b=2
    python test1.py "$a" "$b"
    
    4 thay vì chỉ số 0 điển hình như bạn thường làm.

Có một số thông tin chi tiết hơn ở đây, có thể dẫn bạn đến cách xử lý các đối số dòng lệnh tốt hơn. Để bắt đầu mặc dù, điều này sẽ hoạt động đủ tốt.

Đã trả lời ngày 5 tháng 6 năm 2014 lúc 1:37Jun 5, 2014 at 1:37

Pseudoramblepseudoramblepseudoramble

2.49123 Huy hiệu bạc28 Huy hiệu đồng23 silver badges28 bronze badges

Tôi nghĩ rằng điều này sẽ làm những gì bạn muốn:

2014-06-05 09:37:57 [tmp]$ export VAR1="a"
2014-06-05 09:38:01 [tmp]$ export VAR2="b"
2014-06-05 09:38:05 [tmp]$ export VAR3="c"
2014-06-05 09:38:08 [tmp]$ export VAR4="d"
2014-06-05 09:38:12 [tmp]$ python
Python 2.7.3 [default, Feb 27 2014, 19:58:35] 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from os import environ
>>> environ['VAR1']
'a'
>>> environ['VAR2']
'b'
>>> environ['VAR3']
'c'
>>> environ['VAR4']
'd'
>>> environ['VAR5']
Traceback [most recent call last]:
  File "", line 1, in 
  File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
    raise KeyError[key]
KeyError: 'VAR5'

Hãy nhớ bắt KeyError và trả lời phù hợp hoặc sử dụng phương thức GET [từ lớp Dict] và chỉ định mặc định sẽ được sử dụng khi không có khóa:

>>> environ.get['VAR5', 'not present']
'not present'

Thêm: //docs.python.org/2/l Library/os.html

Đã trả lời ngày 5 tháng 6 năm 2014 lúc 1:46Jun 5, 2014 at 1:46

1

Tôi muốn thêm những gì đã làm việc cho trường hợp của tôi:

Tôi có các biến của mình trong tập tin được lấy trong script shell. Cần chuyển các biến cho Python từ cùng một tệp. Tôi cũng có gấu trúc và tia lửa trong trường hợp của tôi, kết quả dự kiến ​​của tôi là kết hợp con đường đi qua trong "tocsv" mà đạt được

**Shell**:
. path/to/variable/source file # sourcing the variables
python path/to/file/extract.py "$OUTBOUND_PATH"


**Python**:
import sys
import pandas as pd
#If spark session is involved import the sparksession as well

outbound_path=sys.argv[1] #argument is collected from the file passed through shell
file_name="/report.csv"

geo.topandas[].tocsv[outbound_path+file_name,mode="w+"]



Đã trả lời ngày 8 tháng 10 năm 2020 lúc 23:04Oct 8, 2020 at 23:04

BhavibhaviBhavi

492 huy hiệu đồng2 bronze badges

Làm cách nào để chuyển một biến từ tập lệnh bash sang tập lệnh Python?

Thay vì nhập đầu vào sau tên tập lệnh trong bash, bạn được nhắc nhập giá trị sau khi bạn chạy tập lệnh. Chạy tập lệnh sẽ nhắc người dùng "Nhập ký tự:". Sau khi người dùng nhập các ký tự và sau đó nhấn ENTER, các hoán vị sẽ in trong thiết bị đầu cuối.you are prompted to input the value after you run the script. Running the script will prompt the user to "enter characters:". After the user enters the characters and then presses ENTER , the permutations will print in the terminal.

Làm cách nào để chuyển đầu ra của tập lệnh shell sang biến python?

Bạn hỏi: Làm cách nào để chuyển đầu ra của tập lệnh Python cho biến shell?Bạn bắt đầu tập lệnh Python của mình từ một tập lệnh shell [hoặc cũng từ một shell tương tác] và sử dụng thay thế lệnh.Đối với vỏ Posix [ví dụ: GNU Bash, Korn Shell, v.v.], bạn có thể sử dụng: #!/Bin/Sh.start your Python script from a shell script [or also from an interactive shell] and use command substitution. For POSIX shells [e.g. GNU Bash, Korn shell, etc], you could use: #!/bin/sh.

Làm thế nào để bạn sử dụng một biến shell trong Python?

Tìm nạp các biến shell môi trường theo chuỗi tên của biến shell mong muốn [ví dụ: hệ điều hành.Các dấu hiệu trên DOS [ % người dùng %] và gọi getenv ["người dùng"] trong chương trình C.environ by the desired shell variable's name string [e.g., os. environ['USER'] ] is the moral equivalent of adding a dollar sign before a variable name in most Unix shells [e.g., $USER ], using surrounding percent signs on DOS [ %USER% ], and calling getenv["USER"] in a C program.

Làm thế nào để bạn vượt qua một biến trong tập lệnh Python?

Lệnh Python InputArgv hoặc bằng cách mã hóa các biến đầu vào trong máy tính xách tay Jupyter trước khi chạy tập lệnh.Một tùy chọn khác là lấy đầu vào từ người dùng thông qua hàm input []. argv command or by hard-coding the input variables in Jupyter Notebook before running the script. Another option is to take input from the user through the input[] function.

Bài Viết Liên Quan

Chủ Đề