Python subprocess.run无法处理大参数字符串

问题描述 投票:0回答:1

我需要调用一个powershell脚本并捕获其生成的输出。

因为我需要捕获输出,所以我选择使用subprocess.run()

Powershell调用

powershell DeleteResults -resultscsv '1111,2222,3333,4444'

Python(Python 3.5.2 :: Anaconda 4.1.1(64位))代码

command = "powershell DeleteResults -resultscsv '{}'".format(resultscsv)
output = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8')

只要命令的长度小于33K(大约),一切都会很好

但是,当长度超过33K时,subprocess.call()会引发错误(在powershell方面没有问题,因为直接调用时它工作得很好)

ERROR: [WinError 206] The filename or extension is too long
Traceback (most recent call last):
  File "D:\path\to\python\wrapper.py", line 154, in <module>
    output = subprocess.run(command, stdout=subprocess.PIPE).stdout.decode('utf-8')
  File "D:\Anaconda3\lib\subprocess.py", line 693, in run
    with Popen(*popenargs, **kwargs) as process:
  File "D:\Anaconda3\lib\subprocess.py", line 947, in __init__
    restore_signals, start_new_session)
  File "D:\Anaconda3\lib\subprocess.py", line 1224, in _execute_child
    startupinfo)

任何指针都会有很大帮助。

不确定是否相关-在Windows环境中通过Control-M调用python脚本。

python subprocess
1个回答
0
投票

存在命令行字符串限制,其值取决于操作系统版本。

不可能通过命令行参数传递大数据。

© www.soinside.com 2019 - 2024. All rights reserved.