【发布时间】:2017-08-07 21:49:51
【问题描述】:
我在当前目录中用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 如何处理文件的更多信息?
【问题讨论】:
-
它需要一个 string-like 或
PathLike对象。只需通过'foo'。你为什么要open文件呢? -
与“path like”相反,有所谓的"file like" objects(就像你试图传递给
subprocess.run()的那个)。简而言之,这些文件句柄允许您从 Python 内部 操作文件(或流,一般而言),使用read()和write()等方法。
标签: python python-3.x file