0

txtファイルの電子メールアドレスを匿名化するために、次のスクリプトを作成しました。

import io, os, sys
import re

def main():

try:
    # Open the file.
    myfile = open('emails.txt', 'r')

    # Read the file's contents.
    content = myfile.read()
    content = re.sub(r'.+(?=@.+\.(com|edu))', "xxxx", content)

    myfile = open('emails.txt', 'w')
    myfile.write(content)   
    # Close the file.
    myfile.close()

except IOError:
    print('An error occured trying to read the file.')

except:
    print('An error occured.')

main()

ディレクトリとそのサブディレクトリ内のすべてのファイルに対してこれをどのように機能させることができるのか疑問に思いました。

4

2 に答える 2

1

os.walk()あなたが望むものです。スニペットに変更を加えて、次のことを示しました。

#!/usr/bin/env python

import re
from os import walk
from os.path import join

def main():
    for (dirpath, _, filenames) in walk('/path/to/root'):
        for filename in filenames:
            # Build the path to the current file.
            path_to_file = join(dirpath, filename)
            content = None
            # Open the file.
            with open(path_to_file, 'r') as myfile:
                print 'Reading {0}'.format(path_to_file)
                # Read the file's contents.
                content = myfile.read()
                content = re.sub(r'.+(?=@.+\.(com|edu))', "xxxx", content)

            with open(path_to_file, 'w') as myfile:
                myfile.write(content)

main()
于 2013-03-05T08:21:17.173 に答える
0

glob.globを使用する

import io, os, sys
import re
import glob

def main():
    try:
        # Open the file.
        for f in glob.iglob('/path/to/root/*'):
            if not os.path.isfile(f):
                continue
            myfile = open(f, 'r')

            # Read the file's contents.
            content = myfile.read()
            content = re.sub(r'.+(?=@.+\.(com|edu))', "xxxx", content)

            myfile = open(f.replace('.txt', '.new.txt'), 'w')
            myfile.write(content)
            # Close the file.
            myfile.close()

        except IOError:
            print('An error occured trying to read the file.')
        except:
            print('An error occured.')

main()
于 2013-03-05T09:02:42.383 に答える