使用“subprocess.run”和“cat”时遇到问题

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

由于某些原因,我需要从

os.system
移动到
subprocess.run
来连接文件(可以是ascii文件,也可以是二进制文件)。

虽然它在 Windows (anaconda) 下工作正常,但以下代码片段在 Linux (Ubuntu) 下似乎被阻止或等待某些内容:我错过了什么?

注意

a.txt
b.txt
仅包含单个 (ascii) 单词。

谢谢

保罗

import os, subprocess
Path = os.getcwd()
bottomFile = 'b.txt'
topFile = 'a.txt'
resultFile = 'c.txt'
    
command_line = f"cat {Path}/{topFile} {Path}/{bottomFile} > {Path}/{resultFile}"
args = command_line.split()
subprocess.run(args, shell = True)
python subprocess
1个回答
0
投票

当您将

subprocess.run()
shell=True
一起使用时,参数可以是具有完整命令行的单个字符串,然后由 shell 解释。

只需将您的

run()
调用更改为此,它就可以在 Linux 和 Windows 上运行:

subprocess.run(command_line, shell = True)

当您使用

run()
调用
shell=False
时,您需要将命令行拆分为程序及其参数。

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