我用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文档。

08-08 00:38
查看更多