我在當前目錄中創建了一個文件,其中包含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中處理文件的更多信息?
它需要一個*類似字符串的*或'PathLike'對象。只要通過''foo''。無論如何,你爲什麼要打開文件? –
與「路徑像」相反,有所謂的[「文件像」對象](https://docs.python.org/3/glossary.html#term-file-object)(就像你試圖傳遞的那個到'subprocess.run()')。簡而言之,這些文件句柄允許您使用'read()'和'write()'等方法對Python *內部的文件(或流,一般來說)*進行操作。 –