如何使用Python打开Shell脚本并更新变量值?

时间:2019-01-23 10:12:11

标签: python-2.7

我有.sh文件(imr_s3_cp.sh)。此文件中有变量SRC_FOLDER。此变量包含一些值。我想更新此值,然后将文件保存在同一位置。

文件包含此

export SRC_FOLDER=**/imrmnt/vvtransform/csv**

export TRG_FOLDER=s3://itx-acm-eureka-dev-incoming-sourcefiles/imrland/

export LOG=/imrmnt/vvtransform/log/s3_cp.log

我想要结果下面的东西-

export SRC_FOLDER=**/imrmnt/vvtransform/csv/CSV_01232019_01232019**

export TRG_FOLDER=s3://itx-acm-eureka-dev-incoming-sourcefiles/imrland/

export LOG=/imrmnt/vvtransform/log/s3_cp.log

1 个答案:

答案 0 :(得分:0)

因为您打算保存环境变量,所以唯一的选择是使用openwrite

第1步:读取并获取行

>>> ev_file = open("/path/to/ev.sh", "r+")
>>> evfile_contents = ev_file.read()
>>> evfilelines = evfile_contents.split("\n")

第2步:用SRC_FOLDER查找行

>>> linenum = 0
>>> for i in range(0, len(evfilelines)):
...     if "SRC_FOLDER" in evfilelines[i]:
...             linenum = i
... 

第3步:用新值替换该行

>>> evfilelines[linenum] = 'export SRC_FOLDER=**/imrmnt/vvtransform/csv/CSV_01232019_01232019**'

第4步:截断文件。 注意:如果文件太大,您也可以转到该行并仅更改该行。我让你去探索。

>>> ev_file.seek(0)
0
>>> ev_file.truncate()

第5步:编写新内容

>>> for i in evfilelines:
...     ev_file.write(i + '\n')

第6步:关闭文件以刷新缓冲区

>>> ev_file.close()

然后您有了新的ev.sh,可以在python中阅读。