Hướng dẫn pass variable from bash script to python - chuyển biến từ tập lệnh bash 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() 

Hướng dẫn pass variable from bash script to python - chuyển biến từ tập lệnh bash sang python

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

Hướng dẫn pass variable from bash script to python - chuyển biến từ tập lệnh bash sang python

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: https://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

Hướng dẫn pass variable from bash script to python - chuyển biến từ tập lệnh bash sang python

BhavibhaviBhavi

492 huy hiệu đồng2 bronze badges

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

Tương tự như cách bạn đặt đầu ra của bất cứ thứ gì vào một biến shell: `lemquotes` hoặc $ (): Nếu tập lệnh có thể thực thi, thì đây chỉ là, ví dụ, foo =` Bar`..
#!/bin/sh..
CommandOutput = "$ (thực thi arg1 arg2" arg 3 với khoảng trắng ")".
Echo "Đầu ra là $ CommandOutput".

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.

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.

Bạn có thể chạy một kịch bản bash trong Python không?

Thực hiện các tập lệnh Bash bằng mô -đun phụ Python Chúng tôi có thể thực hiện bằng cách thêm đối số khóa tùy chọn Capture_output = true để chạy chức năng hoặc bằng cách gọi chức năng Check_output từ cùng một mô -đun.Cả hai chức năng đều gọi lệnh, nhưng quy trình đầu tiên có sẵn trong Python3.7 và phiên bản mới hơn.We can do it by adding optional keyword argument capture_output=True to run the function, or by invoking check_output function from the same module. Both functions invoke the command, but the first one is available in Python3. 7 and newer versions.