SQL Server 2022调用Python脚本获取文件夹文件列表异常排查
问题分析与解决方案
你的脚本核心问题是直接打印了os.walk()返回的生成器对象,而非遍历生成器提取实际的文件/文件夹信息。
os.walk()的返回值是一个生成器,它不会直接生成完整的文件列表,而是在遍历过程中逐次产生三元组(当前文件夹路径、子文件夹列表、文件列表)。直接打印生成器只会输出它的内存地址标识,无法展示实际的文件内容。
修正方案1:在Python脚本中打印所有文件路径
修改脚本,遍历生成器并输出每个文件的完整路径:
EXECUTE sp_execute_external_script @language = N'Python', @script = N' import os for root, dirs, files in os.walk(r''E:\Backups\''): for file in files: print(os.path.join(root, file)) '
修正方案2:将文件列表返回为SQL Server结果集
如果需要把文件列表作为查询结果返回给SQL Server,可以构造DataFrame并输出:
EXECUTE sp_execute_external_script @language = N'Python', @script = N' import os import pandas as pd file_list = [] for root, dirs, files in os.walk(r''E:\Backups\''): for file in files: file_list.append(os.path.join(root, file)) df = pd.DataFrame(file_list, columns=["FullFilePath"]) OutputDataSet = df ' WITH RESULT SETS ((FullFilePath NVARCHAR(MAX)));
内容的提问来源于stack exchange,提问作者ZedZip
相关产品推荐
相关产品推荐

