如何在子进程中使用 tr 命令

How to use tr command in subprocess

我是 tr 命令的新手,想知道它是如何工作的?命令如何知道要操作哪个文件?我的理解是语法是 tr [options] [change from] [change to]。没有声明要对其进行操作的文件。我正在尝试创建一个 csv 文件并想将“/”更改为“,”

我的文件开头为:

3251/pid/3256/
245/pid/09732/
234541/pid/92/
1/4918,

我想得到:

3251,pid,3256,
245,pid,09732,
234541,pid,92,
1,4918,

我有:

subprocess.run(['tr', '/', ',']), stdout = open('outfile.txt.tmp','w'))

它开始 运行 但它从未完成,我每次都不得不退出。不确定错误是什么,但我想知道如果我想 运行 在名为 infile.txt 的文件上使用 tr,我的语法应该是什么

没有任何输入 tr 永远等待。您需要将文件内容传递给标准输入:

subprocess.run(['tr', '/', ','], stdout = open('outfile.txt.tmp','w'), input=open('foo.txt').read().encode('utf-8'))
print(open('outfile.txt.tmp').read())

输出:

CompletedProcess(args=['tr', '/', ','], returncode=0)
3251,pid,3256,
245,pid,09732,
234541,pid,92,
1,4918,