以前生成SAS程序的时候,一般是先在tracker上根据shell上的TFL生成对应的程序名,然后再把这些程序名一个一个复制到文件夹,生成对应的SAS程序,这样做不仅费时费力,还容易出错,尤其是repeat AE table的时候,要是有几十张,然后一个程序对应一张table,光是复制粘贴人都要麻了。但是现在我们可以用python帮我们实现,只需要提前在tracker上写好程序名就行,这也是提高工作效率的方法之一,更进一步还可以直接根据toc就直接在tracker上生成对应的程序名,但这需要一定的规则,我们暂时不处理这个。假设excel文件名叫做tracker,需要读取的列名为PGMNAME,接下来就可以直接生成程序了。import pandas as pdimport os# 1. 读取Excel文件excel_path = "XXXXXXXXXXXXX\\SDTM\\tracker.xlsx" # 修改为你的Excel文件路径df = pd.read_excel(excel_path)# 2. 指定要读取的列名(根据实际情况修改)column_name = "pgmname" # 修改为你的列名program_names = df[column_name].dropna().tolist()# 3. 指定存放SAS文件的文件夹output_folder = "XXXXXXXXXXXX\\SDTM" # 修改为目标文件夹路径# 4. 创建文件夹(如果不存在)if not os.path.exists(output_folder): os.makedirs(output_folder)print(f"已创建文件夹: {output_folder}")# 5. 批量生成空的.sas文件success_count = 0fail_count = 0for name in program_names: program_name = str(name).strip()# 清理非法字符(可选,防止文件名出错)illegal_chars = '<>:"/\\|?*'for char in illegal_chars: program_name = program_name.replace(char, '_') file_path = os.path.join(output_folder, f"{program_name}.sas")try:# 创建空的.sas文件with open(file_path, 'w', encoding='utf-8'):passprint(f"✓ 已生成: {program_name}.sas") success_count += 1except Exception as e:print(f"✗ 生成失败: {program_name}, 错误: {e}") fail_count += 1# 输出统计print(f"\n完成!成功: {success_count} 个,失败: {fail_count} 个")
excel_path ="XXXXXXXXXXXXX\\SDTM\\tracker.xlsx" sheet_name ="Sheet1"# 修改为你的sheet名称
df = pd.read_excel(excel_path, sheet_name=sheet_name)
还有很多可以提高效率的地方,后续看看还有什么地方。