Код with open('test.txt') as F
открывает файл и назначает его указатель переменной F
.
Если я правильно понял, вы хотели содержимое файла.Поскольку subprocess.call
требуется такая команда, как вы выполняете с терминала / консоли (в вашем случае cat test.txt
).Здесь в subprocess.call
вы передаете File Descriptor
иногда называемый File Pointer
вместо самого файла.
Поэтому из кода, если вы действительно хотите содержимое файла, вы можете просто использовать F.read()
или F.readlines()
.Например,
with open('test.txt') as F:
print F.readlines()
Также обратите внимание, что subprocess.call
ожидает аргументы как string
.В первом случае это файловый объект, то есть <open file 'test.txt', mode 'r' at 0x7fa64a6f5a50>
, который приводит к traceback
, тогда как во втором случае его строка, то есть test.txt
, поэтому работает без проблем.