2010-08-02 20 views
2
for subdir, dirs, files in os.walk(crawlFolder): 
    for file in files: 
     print os.getcwd() 
     f=open(file,'r') 
     lines=f.readlines() 
     writeFile.write(lines) 
     f.close() 
writeFile.close() 

je reçois l'erreur: -aide IOError pour la lecture de fichiers

IOError: [Errno 2] Aucun fichier ou répertoire

En ce qui concerne mon code python partiel ci-dessus: -

impression os.getcwd() -> C: \ moteur de recherche \ taxonomie

cependant, le fichier se trouve dans le répertoire "C: \ moteur de recherche \ taxonomie \ TestFolder"

Je sais que l'erreur est due au fait que cela fonctionne dans le répertoire courant et que j'ai besoin d'ajouter le répertoire testFolder au fichier. Quelqu'un pourrait-il corriger mon code et m'aider avec ça? Merci.

Répondre

3

La variable subdir vous donne le chemin de crawlFolder dans le répertoire contenant file, donc il vous suffit de passer os.path.join(crawlFolder, subdir, file)-open au lieu d'un file nu. Comme si:

for subdir, dirs, files in os.walk(crawlFolder): 
    for file in files: 
     print os.getcwd() 
     f=open(os.path.join(crawlFolder, subdir, file),'r') 
     lines=f.readlines() 
     writeFile.write(lines) 
     f.close() 
writeFile.close() 

Soit dit en passant, c'est une façon plus efficace de copier un fichier dans un autre fichier:

for subdir, dirs, files in os.walk(crawlFolder): 
    for file in files: 
     print os.getcwd() 
     f=open(os.path.join(crawlFolder, subdir, file),'r') 
     writeFile.writelines(f) 
     f.close() 
writeFile.close() 

[EDIT: ne peut résister à la tentation de jouer au golf:

for subdir, dirs, files in os.walk(crawlFolder): 
    for file in files: 
     writeFile.writelines(open(os.path.join(crawlFolder, subdir, file))) 
writeFile.close() 

]

+0

+1: o s.path.join. –

+0

Nous vous remercions de votre aide. –