import os
from datetime import timedelta
import shutil
import psutil
def merge_env_variables(env_output, var_list):
"""
解析env命令输出,提取指定环境变量并与当前环境合并
参数:
env_output (str): env命令输出的文本
var_list (list): 需要提取的环境变量名称列表
返回:
dict: 合并后的环境变量字典,适用于subprocess模块
"""
merged_env = os.environ.copy()
extracted_env = {}
for line in env_output.strip().splitlines():
if '=' not in line:
continue
parts = line.split('=', 1)
var_name = parts[0]
var_value = parts[1] if len(parts) > 1 else ''
if var_name in var_list:
extracted_env[var_name] = var_value
merged_env.update(extracted_env)
return merged_env
def elapsed_time_str(delta:timedelta):
hours = delta.seconds // 3600
minutes = (delta.seconds // 60) % 60
seconds = round(delta.seconds % 60 + delta.microseconds // 10000 * 0.01,1)
x = [delta.days,hours,minutes,seconds]
y = ['d','h','m','s']
for i in range(len(x)):
if x[i] > 0 or i == len(x) - 1:
x = x[i:]
y = y[i:]
break
result = ""
for i in range(len(x)):
result += f"{x[i]}{y[i]}"
return result
def get_file_path(path: str):
cwd = os.getcwd()
relpath = os.path.relpath(path, cwd)
return path if len(path) < len(relpath) else relpath
def check_disk_space(v):
"""
检查当前运行目录所在磁盘的剩余空间
如果剩余空间小于v GB返回False,否则返回True
"""
try:
current_dir = os.getcwd()
disk_usage = shutil.disk_usage(current_dir)
free_space_gb = disk_usage.free / (1024 ** 3)
return free_space_gb >= v
except Exception as e:
return False
def check_memory(v):
"""
检查系统可用内存
如果可用内存小于v GB返回False,否则返回True
"""
try:
memory = psutil.virtual_memory()
available_memory_gb = memory.available / (1024 ** 3)
return available_memory_gb >= v
except Exception as e:
return False