что правильно . Вы также можете использовать os.popen (), но там, где он доступен (Python 2.4+), обычно предпочтительнее.
Однако, в отличие от некоторых языков, которые поощряют это, обычно считается дурным тоном создавать подпроцесс, в котором вы можете выполнять ту же работу внутри языка. Он медленнее, менее надежен и зависит от платформы. Ваш пример был бы лучше:
foo= open('/tmp/baz').read()
эта:
baz - это каталог, и я пытаюсь получить содержимое всех файлов в этом каталоге
? cat в каталоге выдает мне ошибку.
Если вам нужен список файлов:
import os
foo= os.listdir('/tmp/baz')
Если вам нужно содержимое всех файлов в каталоге, например:
contents= []
for leaf in os.listdir('/tmp/baz'):
path= os.path.join('/tmp/baz', leaf)
if os.path.isfile(path):
contents.append(open(path, 'rb').read())
foo= ''.join(contents)
или, если вы можете быть уверены, что там нет каталогов, вы можете поместить его в однострочник:
path= '/tmp/baz'
foo= ''.join(open(os.path.join(path, child), 'rb').read() for child in os.listdir(path))