Spaces:
Sleeping
Sleeping
import os | |
import tempfile | |
# 设置 Hugging Face 缓存目录 | |
def setup_hf_cache(): | |
"""设置 Hugging Face 缓存目录,在 Hugging Face Spaces 中使用临时目录""" | |
if os.environ.get('SPACE_ID') or os.environ.get('HF_SPACE_ID'): | |
# 在 Hugging Face Spaces 中使用临时目录作为缓存 | |
cache_dir = tempfile.mkdtemp() | |
os.environ['HF_HOME'] = cache_dir | |
os.environ['HF_HUB_CACHE'] = os.path.join(cache_dir, 'hub') | |
print(f"Using Hugging Face cache directory: {cache_dir}") | |
return cache_dir | |
else: | |
# 本地环境使用默认缓存目录 | |
return None | |
# 检查是否在 Hugging Face Spaces 环境中 | |
def get_data_paths(): | |
# 如果在 Hugging Face Spaces 中,使用临时目录 | |
if os.environ.get('SPACE_ID') or os.environ.get('HF_SPACE_ID'): | |
# 使用临时目录 | |
temp_dir = tempfile.mkdtemp() | |
return { | |
'DATA_PATH': os.path.join(temp_dir, 'pdf/'), | |
'TXT_PATH': os.path.join(temp_dir, 'txt/'), | |
'TSV_PATH': os.path.join(temp_dir, 'tsv/'), | |
'MD_PATH': os.path.join(temp_dir, 'md/'), | |
'INFO_PATH': os.path.join(temp_dir, 'info/'), | |
'IMG_PATH': os.path.join(temp_dir, 'img/'), | |
'RESULTS_PATH': os.path.join(temp_dir, 'results/') | |
} | |
else: | |
# 本地环境使用原来的路径 | |
return { | |
'DATA_PATH': './src/static/data/pdf/', | |
'TXT_PATH': './src/static/data/txt/', | |
'TSV_PATH': './src/static/data/tsv/', | |
'MD_PATH': './src/static/data/md/', | |
'INFO_PATH': './src/static/data/info/', | |
'IMG_PATH': './src/static/img/', | |
'RESULTS_PATH': './src/static/data/results/' | |
} | |
# 全局路径管理函数 | |
def get_path(path_type, survey_id=None, filename=None): | |
""" | |
获取动态路径 | |
path_type: 'pdf', 'txt', 'tsv', 'md', 'info', 'img', 'results' | |
survey_id: 可选的调查ID | |
filename: 可选的文件名 | |
""" | |
paths_config = get_data_paths() | |
if path_type == 'pdf': | |
base_path = paths_config['DATA_PATH'] | |
elif path_type == 'txt': | |
base_path = paths_config['TXT_PATH'] | |
elif path_type == 'tsv': | |
base_path = paths_config['TSV_PATH'] | |
elif path_type == 'md': | |
base_path = paths_config['MD_PATH'] | |
elif path_type == 'info': | |
base_path = paths_config['INFO_PATH'] | |
elif path_type == 'img': | |
base_path = paths_config['IMG_PATH'] | |
elif path_type == 'results': | |
base_path = paths_config['RESULTS_PATH'] | |
else: | |
raise ValueError(f"Unknown path type: {path_type}") | |
if survey_id: | |
base_path = os.path.join(base_path, str(survey_id)) | |
if filename: | |
return os.path.join(base_path, filename) | |
return base_path |