Python 文件操做之OS模塊

with open('filepath') as rename:python

  for line in rename:app

    ...函數

with 命令下 不用使用close()函數關閉文件,打開的文件在with 代碼塊下有效。優化

 

python OS 模塊:(import os)spa

  os.getcwd()                                       # return the current working dictionary操作系統

  os.chdir(path)                                   # change the current working dictionary to the specified pathcode

  os.listdir(path='...')                            # Return a list containing the names of the files in the directoryorm

  os.mkdir(pah,[mode])                         # 建立單層目錄對象

  os.makedirs(path,[mode])                   # super mkdr() 遞歸建立多層目錄blog

  remove(path)                                       # 刪除文件

  rmdir(path)                                           # 刪除單層 目錄,非空目錄拋出異常

  removedirs(path)                                  # 遞歸刪除多層 目錄

  rename(old, new)                                  # 重命名, 可經過該命令進行文件賦值

  system(command)                                # 運行系統命令

--------------------------------------------------------------------------------------------------------------------------

  os.curdir                                                #常量 ‘.’ 指代當前目錄

  os.aprdir                                                 # 常量 ‘..’ 指代上級目錄

  os.name                                                 #指代當前 操做系統

  os.linesep                                              #系統換行符

  os.sep                                                   #系統 路徑分隔符

===============================================================================

os.path 模塊

  basename(path)                                     #去掉目錄路徑, 單獨返回文件名

  dirname(path)                                          #去掉文件名 返回路徑

  join('path1', 'path2',...)                             #將輸入的字符牀 path一、path2 組成路徑返回

  split(path)                                                 # 分割文件路徑 返回元組 不會判斷路徑是否存在

  splittext(path)                                            #分離文件名與擴展名 返回元組、

  getsize(file)                                               # 返回文件大小

  getatime(file)                                             # 返回最近訪問時間(time.localtime(float)獲得時間)

  getctime(file)                                              #返回文件建立時間

  getmtime(file)                                             # 返回文件修改時間

-----------------------------------------------------------------------------------------------------------------------------

  exists(path)                                                #判斷指定路徑是否存在

  isabs(path)                                                  #判斷是否爲絕對路徑

  isdir(path)

  isfile(path)

  islink(path)

  ismount(path)                            

  samefile(path1, path2)                              # 兩個路徑是否指向同一個文件

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

pickle: 存取二進制文

  pickle.dump(data, file_object)

  pickle.load()

 

經過OS 模塊及 os.path模塊下的方法 查看當前目錄的文件,並按照文件修改時間排序:代碼以下。

import os
import time
print(os.getcwd())
dirs_list = os.listdir()
file_modify_time = []
for dir in dirs_list:
    #print(dir + ':    '+ str(os.path.getsize(dir)))
    dict_time = {'name': dir, 'mtime': os.path.getmtime(dir)} # 將文件信息組成字典
    file_modify_time.append(dict_time)                        # append 進入事先定義的列表中
#print(file_modify_time)

def sorted_seed(file_modify_time):                            # 爲排序函數 sorted() 中的 key 參數定義 種子函數
    return file_modify_time['mtime']

def sorted_file_with_mtime(file_modify_time):
    results = sorted(file_modify_time, key = sorted_seed)       # 經過sorted() 函數 及其種子函數按 列表中字典的時間值 排序
    return results

results = sorted_file_with_mtime(file_modify_time)

for result in results:
    year, mon, day, hour, mint, sec, wday, yday, isdst = time.localtime(result['mtime']) # time.localtimae()獲得的時間參數 解構
    print('{0}\n{1:>}'.format(result['name'],str(year) + '.' + str(mon) + '.' + str(day) + '——' + str(hour) + ':' + str(mint) + ':' + str(sec))) #format函數打印結果

經過定義類的方式 實現。

 

# 代碼優化
import os
import pickle

# 定義一個文件信息查看 類
class File_check():
    num = 0

    # 記錄對象 個數
    def __init__(self):
        self.__class__.num += 1
    
    #經過 os 的 內置函數 獲取路徑內文件信息
    def __get_file_list(self, path):
        if os.path.exists(path):
            file_message_list = []
            file_name_list = os.listdir(path)
            for name in file_name_list:
                dict_time = {'name': name, 'mtime': os.path.getmtime(name)}
                file_message_list.append(dict_time)
        else:
            print("Wrong path, dosn't exist")
            file_message_list = None
        return file_message_list
    
    # 對文件進行排序 按照文件的修改時間
    def __sorted_file(self, file_message_list):
        if file_message_list == None:
            sorted_file_list = None
        elif not file_message_list:
            print('Empty dir')
            sorted_file_list = []
        else:
            # 經過 sorted 函數進行排序 , 爲 key 參數構建一個種子函數
            sorted_file_message_list = sorted(file_message_list, key = self.__sorted_seed)
        return sorted_file_message_list
    
    # 種子函數
    def __sorted_seed(self, file):
        return file['mtime']
    
    # 結果顯示
    def __show_results(self, sorted_file_message_list):
        for result in sorted_file_message_list:
            print(result)
    
    # 結果存入文件
    def __results_write2_file(self, sorted_file_message_list):
        with open('test.log', mode='wb') as f:
            pickle.dump(sorted_file_message_list,f)

    # 入口程序
    def run(self, path):
        file_list = self.__get_file_list(path)
        sorted_file_message_list = self.__sorted_file(file_list)
        self.__results_write2_file(sorted_file_message_list)
        self.__show_results(sorted_file_message_list)

        
file = File_check()
os.chdir('D:')
file.run(os.getcwd())
相關文章
相關標籤/搜索