это правильно. Вы также можете использовать 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))
person
bobince
schedule
11.09.2009