gpt4 book ai didi

Python 子进程列无效选项

转载 作者:行者123 更新时间:2023-11-30 22:24:55 25 4
gpt4 key购买 nike

我想让 shell 显示 csv在我的 python 脚本中以良好的格式保存文件。所以我写了以下内容:

printout = "column -s, -t < output.csv | less -#2 -N -S "
subprocess.call(printout.split(), shell = False)

我得到的错误是:

column: invalid option -- '#'

我粗略地知道这与 shell=False 有关。 ;但是当我将其设置为True时并在命令行中运行,它使我进入另一行,我必须 ctrl+C出去。

最佳答案

您的原始代码相当于 shell 命令:

# this can be used to reproduce your bug at a shell
column -s, -t '<' output.csv '|' less -#2 -N -S

...传递< , | , less等作为 column 的参数,不将它们视为 shell 指令。

<小时/>

参见Replacing Shell Pipelines部分在 subprocess模块文档。

p1 = subprocess.Popen(['column', '-s,', '-t'],
stdin=open('output.csv', 'r'),
stdout=subprocess.PIPE)
p2 = subprocess.Popen(['less', '-#2', '-N', '-S'],
stdin=p1.stdout)
p1.stdout.close() # ensure that p2 has the only remaining handle on p1.stdout
p2.communicate() # let less run

关于Python 子进程列无效选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47700765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com