Python 文件目錄操作

from os import listdir
from os import getcwd
from os.path import isfile

listdir:  列出當前路徑下的所有目錄,文件
os.path.isfile:   判斷路徑是否是文件
os.path.basename: path=‘c:\aa\bb\cc’,則返回cc
getcwd, sys.modules[__name__].__file__, sys.argv[0]: 當前的工作路徑

__file__: 該模塊的路徑,包括模塊名

__name__和__main__:

'__main__' is the name of the scope in which top-level code executes. A module’s __name__ is set equal to '__main__' when read from standard input, a script, or from an interactive prompt.

A module can discover whether or not it is running in the main scope by checking its own __name__, which allows a common idiom for conditionally executing code in a module when it is run as a script or with python -m but not when it is imported:

if __name__ == "__main__":
    # execute only if run as a script
    main()
For a package, the same effect can be achieved by including a __main__.py module, the contents of which will be executed when the module is run with -m.


一個log處理的示例,找到目錄下所有的文件中的行,改行包含字符xxx.cn,改行的上一行包含<domain:update,打印出行號

# -*-coding:utf-8 -*-

import os
from os import listdir
from os.path import isfile, join


def process_log():
    curr_path = os.path.dirname(__file__)
    onlyfiles = [f for f in listdir(curr_path) if isfile(join(curr_path, f))]
    all_files = [os.path.join(curr_path, name) for name in onlyfiles if name.find('eppXML.log.2015') >= 0]

    for one_file in all_files:
        with open(one_file) as log:
            lines = log.readlines()
            n = 0
            find_numbers = []
            for line in lines:
                if line.find('<domain:update') >= 0 and lines[n + 1].find('xxx.cn') >= 0:
                    find_numbers.append(n)
                n += 1
        if len(find_numbers) == 0:
            continue
        print '%s : %s' % (os.path.basename(one_file), find_numbers)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章