我使用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中处理文件的更多信息?
答案 0 :(得分:2)
首先无需打开文件。你可以简单地运行
import subprocess
subprocess.run(['cat', 'foo'])
cat
命令由您的机器作为shell命令运行,因此您应该只能将文件名作为字符串传递。
Python根本不处理该文件。子进程的要点是将命令传递给底层系统(在本例中,显然是基于UNIX的操作系统)。您所做的只是将明文命令传递给命令行。
但是,我不会阻止您阅读有关文件处理的内容。查看this文档。答案 1 :(得分:2)
PathLike对象:docs
如何从open来电return value:
中获取使用name
字段
subprocess.run(['cat',file.name])
了解python文件:Reading and writing files