由于某些原因,我需要从
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)
当您将
subprocess.run()
与 shell=True
一起使用时,参数可以是具有完整命令行的单个字符串,然后由 shell 解释。
只需将您的
run()
调用更改为此,它就可以在 Linux 和 Windows 上运行:
subprocess.run(command_line, shell = True)
当您使用
run()
调用 shell=False
时,您需要将命令行拆分为程序及其参数。