foo 在当前目录中创建了一个文件。然后我尝试将该文件传递给 subprocess.run,但我似乎误解了 Python 中文件路径的处理方式,因为我遇到了错误。怎么了-6ren">
gpt4 book ai didi

python - 无法将文件句柄传递给子进程

转载 作者:行者123 更新时间:2023-11-28 22:25:20 26 4
gpt4 key购买 nike

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

关于python - 无法将文件句柄传递给子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45556224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com