web-dev-qa-db-fra.com

Création de fichiers et de répertoires via Python

Je ne parviens pas à créer un répertoire, puis à ouvrir/créer/écrire dans un fichier du répertoire spécifié. La raison ne me semble pas claire. J'utilise os.mkdir () et 

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
if not os.path.exists(path):
    os.mkdir(path)
temp_file=open(path+'/'+img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

Je reçois l'erreur 

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
temp_file=open(img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

Toujours avoir une erreur. Confus plus loin.


Mise à jour 2: Le problème semble être le img_alt, il contient un '/' dans certains cas, ce qui cause le problème.

J'ai donc besoin de gérer le "/" ... ". Y at-il de toute façon d'échapper au"/"ou la suppression est-elle la seule option?

17
ffledgling
import os

path = chap_name

if not os.path.exists(path):
    os.makedirs(path)

filename = img_alt + '.jpg'
with open(os.path.join(path, filename), 'wb') as temp_file:
    temp_file.write(buff)

Le point clé est d’utiliser os.makedirs à la place de os.mkdir. Il est récursif, c’est-à-dire qu’il génère tous les répertoires intermédiaires. Voir http://docs.python.org/library/os.html

Ouvrez le fichier en mode binaire car vous stockez des données binaires (jpeg).

En réponse à Edit 2, si img_alt contient parfois '/':

img_alt = os.path.basename(img_alt)
56
Rob Cowie
    import os
    os.mkdir('directory name') #### this command for creating directory
    os.mknod('file name') #### this for creating files
    os.system('touch filename') ###this is another method for creating file by using unix commands in os modules 
0
Surya