用python讀取檔名和目錄結構資料

2021-09-12 07:27:15 字數 2498 閱讀 2763

該**實現功能:

1、輸入乙個路徑字串,比如 「/home/dingmeng/testdir」,判斷這個目錄是否存在,是否是乙個目錄,是否程式具備讀許可權

2、遞迴的訪問該目錄以下的所有子目錄和檔案,讀取所有檔案的資訊(包括並不限於檔名,大小,訪問許可權,建立時間,最近修改時間等,試著多找出一些資訊來)

3、在程式檔案的同乙個目錄下形成乙個記錄檔案,用json格式記錄這個目錄及其子目錄的資訊

4、程式支援unicode檔名,中文英文蒙文藏文阿拉伯文烏魯巴拉文都支援

(老師布置的小訓練)

import os.path

import os

import json

import time

def read_directory(path, result):

paths = os.listdir(path)

childroot = os.listdir(path)

filepath = path

print(path)

isfile = true

if os.path.isdir(path):

# 判斷是資料夾

isfile = false

result.update(childroot=childroot, filepath=filepath, isfile=isfile)

print(paths)

# 如果是檔案,則建立下列資訊

for i, item in enumerate(paths):

sub_path = os.path.join(path, item)

if os.path.isdir(sub_path):

result[item] = {}

result[item].update(name=item)

read_directory(sub_path, result[item])

else:

item_1 = {}

# 是否是根節點

isfile = true

# 檔案名字

name = item

# 檔案大小

size = os.path.getsize(sub_path)

size = size / float(1024)

size = round(size, 2)

# 檔案的建立時間

create_time = os.path.getctime(sub_path)

create_time = timestamptotime(create_time)

# 獲取檔案的訪問時間

access_time = os.path.getatime(sub_path)

access_time = timestamptotime(access_time)

# 獲取檔案最後修改時間

modify_time = os.path.getmtime(sub_path)

modify_time = timestamptotime(modify_time)

# 獲取檔案內容

with open(sub_path, 'rb+') as f:

file_content = f.read()

# 更新所有資訊

item_1.update(name=name, size=size, create_time=create_time, access_time=access_time,

modify_time=modify_time, isfile=isfile, file_content=file_content.decode('utf-8'))

print(item_1)

result[item] = item_1

def timestamptotime(timestamp):

# 將時間戳變為時間陣列

time_struct = time.localtime(timestamp)

return time.strftime('%y-%m-%d %h:%m:%s', time_struct)

if __name__ == '__main__':

#path為要訪問的資料夾

path = 'c:users\\丁.000\\desktop\\新建'

#filename為生成的記錄檔案的路徑和檔名

filename ="c:users\\丁.000\\desktop\\res.txt"

result = {}

read_directory(path, result)

json_res = json.dumps(result, indent=2, ensure_ascii=false)

print(json_res)

#要加上編碼格式utf-8,這樣在讀取檔案資訊時才不會出現亂碼

with open(filename, 'w', encoding='utf-8') as fp:

fp.write(json_res)

Python遍歷目錄更換檔名和目錄名

encoding utf 8 author walker date 2014 03 07 summary 深度遍歷指定目錄,並將子目錄和檔名改為小寫 注意,此程式只針對windows,windows下檔案 夾 名不區分大小寫 import os import time starttime time....

shell提取檔名和目錄名

用於字串的讀取,提取和替換功能,可以使用 提取字串1.提取檔名 root localhost test var mnt aaa test test.txt root localhost test echo test.txt2.提取字尾 root localhost test echo txt3.提取...

shell 提取檔名和目錄名

在寫shell指令碼中,經常會有需要對路徑和檔名做處理。有時候犯不著用sed命令來操作。bash提供的變數操作和一些外部命令都能很好的處理。var dir1 dir2 file.txt echo file.txt 在shell指令碼中,可以使用變數來儲存這個結果,再加以利用,如file 我們將 換成...