sth is right. Vous pouvez également utiliser os.popen(), mais lorsque le sous-processus disponible (Python 2.4+) est généralement préférable.
Cependant, contrairement à certaines langues qui l'encouragent, il est généralement considéré comme incorrect de générer un sous-processus dans lequel vous pouvez effectuer le même travail dans la langue. C'est plus lent, moins fiable et dépend de la plateforme. Votre exemple serait mieux que:
foo= open('/tmp/baz').read()
eta:
baz est un répertoire et je suis en train de récupérer le contenu de tous les fichiers dans ce répertoire
? chat sur un répertoire me fait une erreur.
Si vous voulez une liste de fichiers:
import os
foo= os.listdir('/tmp/baz')
Si vous voulez le contenu de tous les fichiers dans un répertoire, quelque chose comme:
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)
ou, si vous pouvez être sûr qu'il ya pas de répertoires là-dedans, vous pouvez l'adapter dans un seul ligne:
path= '/tmp/baz'
foo= ''.join(open(os.path.join(path, child), 'rb').read() for child in os.listdir(path))
http://stackoverflow.com/questions/2924310/whats-a-good-equivalent-to-pythons-subprocess-check-call-that-returns-the-conte – jfs