qc a raison . Vous pouvez également utiliser os.popen (), mais le sous-processus disponible (Python 2.4+) est généralement préférable.
Cependant, contrairement à certains langages qui l'encouragent, il est généralement considéré comme une mauvaise forme de générer un sous-processus où vous pouvez faire le même travail dans le langage. C'est plus lent, moins fiable et dépendant de la plate-forme. Votre exemple serait mieux car:
foo= open('/tmp/baz').read()
eta:
baz est un répertoire et j'essaye d'obtenir le contenu de tous les fichiers de ce répertoire
? chat sur un répertoire me donne 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 n'y a pas de répertoires là-dedans, vous pouvez l'inclure dans une seule ligne:
path= '/tmp/baz'
foo= ''.join(open(os.path.join(path, child), 'rb').read() for child in os.listdir(path))