【问题标题】:Update Python Variables via Shell Script通过 Shell 脚本更新 Python 变量
【发布时间】:2023-03-05 02:07:02
【问题描述】:

我有一个 shell 脚本,它按顺序执行两个 python 脚本。在 shell 脚本执行后,我需要手动进入 python 脚本并更新两个变量。我希望在 shell 脚本中自动化这部分,但不确定从哪里开始。

基本上,我想知道是否可以将 shell 变量传递(并在每次运行时递增)到 Python 脚本中。

#!/bin/sh

echo "Download Data"
python /Download.py

wait

echo "Process Data"
python /Process.py

Python 下载

import downloadFunction
downloadFunction.donwload('2014-03-28')

Python 进程

import processData
processData.process(data)

基本上,我想通过 shell 脚本增加日期,比如说 5 次。

所以在 Python 脚本中定义日期变量。

Python 下载

import downloadFunction
date = '2014-03-28'
downloadFunction.donwload(date)

然后每次 shell 脚本运行 Download.py 和 Process.py 时,我希望它在日期上添加一天 - 比如说五天。我不知道从哪里开始。

【问题讨论】:

  • 日期总是当前日期,还是完全不相关?
  • 完全不相关。它是 Python 脚本中的一个字符串。
  • 您可以先使用grep 从文件中提取日期。使用date 来增加它。使用sed 将其存储在文件中。执行!

标签: shell unix python-2.7 sh


【解决方案1】:

您希望将日期作为参数传递给脚本,而不是编辑硬编码值。

Download.py:

import downloadFunction
date = sys.argv[1]
downloadFunction.donwload(date)

然后在你的 shell 脚本中,类似

#!/bin/sh

echo "Download Data"
for d in 2014-03-28 2014-03-29 2014-03-30 2014-03-31 2014-04-01; do
    python /Download.py "$d"
done

# No need to call wait here

echo "Process Data"
python /Process.py

【讨论】:

    【解决方案2】:

    先打我一拳。想我分享我的解决方案。基本上和

    一样
    #!/bin/sh
    
    declare -a arr=("2014-04-01")
    
    for i in "${arr[@]}"
    do
        echo "Download Data"
        export i
        python Download.py
    
        echo "Process Data"
        python /Process.py
    
    done 
    

    在哪里下载.py

    import downloadFunction
    import os
    x = os.environ['i']
    
    downloadFunction(x)
    

    【讨论】:

      猜你喜欢
      • 2016-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2018-08-15
      • 2019-09-16
      相关资源
      最近更新 更多