【问题标题】:Running .pyw file from Execute Process Task SSIS从执行进程任务 SSIS 运行 .pyw 文件
【发布时间】:2020-05-21 04:33:01
【问题描述】:

我正在尝试运行此 python 脚本以使用 SSIS 执行流程任务重命名和保存 Excel 工作表。

import openpyxl
import sys

filePath = sys.argv[1:]
print(filePath)
WorkBook = openpyxl.load_workbook(filePath)
print(WorkBook.sheetnames)
Worksheet = WorkBook.sheetnames[1];
print(Worksheet)
WorkBook[Worksheet].title = 'TransactionSummary'
WorkBook.save(r"C:\Users\*****\Downloads\WeeklyFileLoad\test.xlsx")

以下是流程详情:

我还使用存储 excel 文件路径的 SSIS 变量中的输入变量。并使用 sys.argv 获取此文件路径。

由于此错误,我无法处理此任务:

    [Execute Process Task] Error:
 In Executing "C:\Users\****\AppData\Local\Programs\Python\Python38\pythonw.exe" "C:\Users\****\AppData\Local\Programs\Python\Python38\changingsheetname.py" at "", The process exit code was "1" while the expected was "0".

【问题讨论】:

  • 我的理解是 pythonw 立即退出,而 python 将保持打开状态直到执行完成。可能会出现的另一件事是可执行文件和 python 文件都将在您的文件夹中。当您尝试将其移动到服务器时,这些路径将无效
  • 我对pyhton不熟悉,但是我在网上看到的,是否应该将变量FilePath值作为第二个参数传递给pythonw.exe(可以使用Expressions-tab创建arguments-string如果其中任何一个包含空格,则包含脚本路径和引号中的变量)?我认为 StandardInputValue 不能按您期望的方式工作。

标签: python excel ssis openpyxl


【解决方案1】:

问题是参数值中有空格或特殊字符。请删除工作目录值并仅保留足以运行脚本的可执行文件和参数值。在 SSIS 包中的参数和可执行字符串中添加双引号,这将忽略文件路径字符串之间的空格。

如果您在代码末尾使用 python 运行数据处理,我也给您一个小提示,请包括

import sys
sys.exit(0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 2017-09-08
    • 2018-12-28
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多