This program fixes a file for Firefox for use on certain intranets and demonstrates automated file searching and editing. It was written for use at a university of several thousand computers.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65  | import os
################################################################################
# Keys / Fixes
AUTOCONFIG_URL = 'user_pref("network.proxy.autoconfig_url",', \
                 'user_pref("network.proxy.autoconfig_url", "http://home.my-name.edu/my-name.proxy");'
TYPE = 'user_pref("network.proxy.type",', \
       'user_pref("network.proxy.type", 2);'
################################################################################
# Configuration Options
IGNORE_USERS = 'All Users', 'LocalService', 'NetworkService'
SELECTED_FIXES = AUTOCONFIG_URL, TYPE
################################################################################
# Program Code
def main():
    user_folders = get_user_folders()
    for folder in user_folders:
        profiles_folder = os.path.join(folder, 'Application Data', 'Mozilla', 'Firefox', 'Profiles')
        if os.path.exists(profiles_folder):
            profiles = [os.path.join(profiles_folder, profile) for profile in os.listdir(profiles_folder)]
            fix_profiles(profiles)
def get_user_folders():
    return [os.path.join(r'C:\Documents and Settings', user) for user in os.listdir(r'C:\Documents and Settings') if user not in IGNORE_USERS]
def fix_profiles(profiles):
    for folder in profiles:
        file_name = os.path.join(folder, 'prefs.js')
        if os.path.exists(file_name):
            fix_file(file_name)
def fix_file(file_name):
    selected_fixes = get_selected_fixes()
    file_lines = file(file_name, 'rU').read().splitlines()
    for index, line in enumerate(file_lines):
        line = clean(line)
        for item in selected_fixes:
            key, fix = item[:2]
            if line.startswith(key):
                file_lines[index] = fix
                item[2] = False
                break
    for key, fix, not_fixed in selected_fixes:
        if not_fixed:
            file_lines.append(fix)
    file(file_name, 'w').write('\n'.join(file_lines))
def get_selected_fixes():
    return [[clean(key), fix, True] for key, fix in SELECTED_FIXES]
def clean(string):
    return string.strip().lower()
################################################################################
if __name__ == '__main__':
    main()
 | 
This is just an example of having a program automatically search and edit files based on a defined set of rules.
    Tags: search
  
  
      
Download
Copy to clipboard