Python 2.5.2: trying to open files recursively

前端 未结 3 1160
南方客
南方客 2021-01-05 05:38

The script below should open all the files inside the folder \'pruebaba\' recursively but I get this error:

Traceback (most recent call last):
F

相关标签:
3条回答
  • 2021-01-05 06:17

    os.listdir lists both files and directories. You should check if what you're trying to open really is a file with os.path.isfile

    0 讨论(0)
  • 2021-01-05 06:33

    You're trying to open everything you see. One thing you tried to open was a directory; you need to check if an entry is a file or is a directory, and make a decision from there. (Was the error IOError: [Errno 21] Is a directory not descriptive enough?)

    If it is a directory, then you'll want to make a recursive call to your function to walk over the files in that directory as well.

    Alternatively, you might be interested in the os.walk function to take care of the recursive-ness for you.

    0 讨论(0)
  • 2021-01-05 06:34

    Use os.walk. It recursively walks into directory and subdirectories, and already gives you separate variables for files and directories.

    import re
    import os
    from __future__ import with_statement
    
    PATH = "/home/tirengarfio/Desktop/pruebaba"
    
    for path, dirs, files in os.walk(PATH):
        for filename in files:
            fullpath = os.path.join(path, filename)
            with open(fullpath, 'r') as f:
                data = re.sub(r'(\s*function\s+.*\s*{\s*)',
                    r'\1echo "The function starts here."',
                    f.read())
            with open(fullpath, 'w') as f:
                f.write(data)
    
    0 讨论(0)
提交回复
热议问题