簡體   English   中英

使用Python從文件讀取值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM