我用echo "foo" > foo
在当前目录中创建了一个文件。然后我试图将该文件传递给subprocess.run
,但我似乎误解了Python中如何处理文件路径,因为我收到了一个错误。发生了什么?
我的测试代码
with open('foo') as file:
import subprocess
subprocess.run(['cat',file])
产量
TypeError: expected str, bytes or os.PathLike object, not _io.TextIOWrapper
什么是
PathLike
对象?如何从open('foo')
获取?在哪里可以找到有关如何在Python中处理文件的更多信息? 最佳答案
首先不需要打开文件。你可以直接跑
import subprocess
subprocess.run(['cat', 'foo'])
cat
命令正作为shell命令由您的计算机运行,因此您应该能够将文件名作为字符串传递。Python根本不处理该文件。子流程的目的是将命令传递给底层系统(在本例中,显然是基于UNIX的操作系统)。您所做的一切就是向命令行传递一个纯文本命令。
不过,我不会阻止您阅读有关文件处理的内容。查看this文档。