Python IOError: [Errno 13] le refus d'une Autorisation

Avec le code ci-dessous je reçois IOError: [Errno 13] Permission denied, et je sais que cela est dû au répertoire de sortie étant un sous-dossier du répertoire d'entrée:

import datetime
import os

inputdir = "C:\\temp2\\CSV\\"
outputdir = "C:\\temp2\\CSV\\output\\"
keyword = "KEYWORD"

for path, dirs, files in os.walk(os.path.abspath(inputdir)):
    for f in os.listdir(inputdir):
        file_path = os.path.join(inputdir, f)
        out_file = os.path.join(outputdir, f)
        with open(file_path, "r") as fh, open(out_file, "w") as fo:
            for line in fh:
                if keyword not in line:
                    fo.write(line)

Cependant, lorsque je change le dossier de sortie: outputdir = "C:\\temp2\\output\\" le code s'exécute correctement. Je veux être en mesure d'écrire les fichiers modifiés dans un sous-dossier du répertoire d'entrée. Comment pourrais-je le faire sans obtenir la Permission denied' erreur? Serait la tempfile module être utile dans ce scénario?

Avez-vous des autorisations d'écrire là-bas? Je voudrais utiliser tempfile, personnellement, que c'est plus propre.
pourriez-vous faire de fh en écriture?
Au passage, si vous utilisez des chaînes brutes puis le double-barres obliques inverses ne sera pas nécessaire. Exemple: r"C:\Temp1\CSV\Output\" vs "C:\\Temp1\CSV\\Output\\".
Merci pour l'astuce, Li-aung. =)
D'abord, vous devez comprendre comment walk œuvres.

OriginalL'auteur Keith | 2012-03-28