[英]Read the value from a file with Python
我的文件內容:
NAME="A"
VERSION="20190515231057-816a"
VERSION_ID="2.0"
BUILD_ID="16a438d965923ab62804cea4ba00"
BUILDER_NAME="v1.0"
BUILDER_VERSION="v1.0"
我需要讀取任何數據值,例如BUILDER_VERSION
是值(v1.0)。 我嘗試了以下代碼,但是由於特殊字符,它給出了錯誤。 我該如何解決該問題或建議其他命令?
build_value = subprocess.check_output("sed -ne 's/BUILDER_VERSION=\([^]*\).*/\1/p' < /etc/os-release", shell=True)
在python中,您可以避免在這種簡單情況下使用子進程。 您可以使用open()直接讀取文件,也可以從sys.stdin
接受“標准輸入”(在此之前,您需要導入sys)。
import sys
for line in sys.stdin:
if line.startswith('BUILDER_VERSION='):
value = line.split('=', 1)
print(value[1] if value or 'No version')
break
else:
print('version is not found')
您將使用類似於sed的方法: cat /etc/os-release|python this_script.py
如果要提取數字,則可以使用相同的正則表達式:
import re
version_extractor = re.compile(r'BUILDER_VERSION=([^^]*)')
with open('/etc/os-release', 'r') as file:
for line in file:
match = version_extractor.match(line)
if match:
print(match.groups()[0])
您可以嘗試類似:
with open(FILE_NAME, 'r') as file:
parsed = file.read().split('\n')
for item in parsed:
if VAR_NAME in item:
print(item)
那將打印出包含變量名的文件的整行。 您還可以將行另存為字符串文字,並通過切片,分割,正則表達式等進一步細分。
不過,我敢肯定有更干凈的方法可以做到這一點,所以我將查看一些Python文檔來閱讀文件!
用以下命令替換sed命令:
sed -n 's/^BUILDER_VERSION*= *//p' < /etc/os-release
您可以將BUILDER_VERSION替換為所需的模式
我更改了sed -n 's/^BUILDER_VERSION*= *//p' < /etc/os-release
命令。 現在工作正常。 我還在v1.0的子進程命令的末尾添加了.replace('“',''),謝謝大家。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.