自動獲取文件的內存大小怎么設置?批量獲取文件名和內存大小到Excel中的方法

在對重要數據進行備份或遷移操作前,為確保備份全面無遺漏,且合理規劃目標存儲設備的空間,會將文件名和內存提取到 Excel。比如,某個部門要將舊電腦中的文件遷移到新服務器,提前整理文件信息,能清晰知道所需存儲容量,避免遷移過程中因空間不足出現問題。

一、使用 Python 實現?
Python 有豐富的庫可以實現該功能,使用os庫獲取文件信息,openpyxl庫操作 Excel,以下是示例代碼:

import os
from openpyxl import Workbook

# 指定文件夾路徑
folder_path = '你的文件所在文件夾路徑'

# 創建Excel工作簿和工作表
workbook = Workbook()
sheet = workbook.active
# 添加表頭
sheet.append(['文件名', '內存大小(字節)'])

# 遍歷文件夾中的文件
for root, dirs, files in os.walk(folder_path):
? ? for file in files:
? ? ? ? file_path = os.path.join(root, file)
? ? ? ? file_size = os.path.getsize(file_path)
? ? ? ? sheet.append([file, file_size])

# 保存Excel文件
workbook.save('文件信息.xlsx')

將'你的文件所在文件夾路徑'替換為實際存放 PDF 或 jpg 長圖文件的文件夾路徑,運行代碼后,會在當前目錄生成名為文件信息.xlsx的 Excel 文件,里面包含文件名和內存大小信息。

二、node.js也是可以幫我們批量獲取文件名稱和大小并存放到對應的Excel中

1、首先安裝必要的依賴:npm install xlsx

2、運行腳本:node file_size_excel.js [目錄路徑] [輸出文件路徑

3、如果不提供參數,腳本默認掃描當前目錄并輸出到 "文件信息.xlsx"
示例代碼如下:

const fs = require('fs');
const path = require('path');
const XLSX = require('xlsx');

// 將字節轉換為人類可讀的格式
function formatBytes(bytes, decimals = 2) {
? if (bytes === 0) return '0 Bytes';

? const k = 1024;
? const dm = decimals < 0 ? 0 : decimals;
? const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];

? const i = Math.floor(Math.log(bytes) / Math.log(k));

? return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i];
}

// 遞歸獲取目錄中所有文件的信息
async function getFilesInfo(dirPath) {
? return new Promise((resolve, reject) => {
? ? fs.readdir(dirPath, { withFileTypes: true }, (err, entries) => {
? ? ? if (err) {
? ? ? ? reject(err);
? ? ? ? return;
? ? ? }

? ? ? const filesInfo = [];
? ? ? const promises = entries.map(entry => {
? ? ? ? const entryPath = path.join(dirPath, entry.name);

? ? ? ? if (entry.isDirectory()) {
? ? ? ? ? return getFilesInfo(entryPath).then(subFiles => {
? ? ? ? ? ? filesInfo.push(...subFiles);
? ? ? ? ? });
? ? ? ? } else {
? ? ? ? ? return new Promise((res, rej) => {
? ? ? ? ? ? fs.stat(entryPath, (err, stats) => {
? ? ? ? ? ? ? if (err) {
? ? ? ? ? ? ? ? rej(err);
? ? ? ? ? ? ? ? return;
? ? ? ? ? ? ? }

? ? ? ? ? ? ? filesInfo.push({
? ? ? ? ? ? ? ? name: entry.name,
? ? ? ? ? ? ? ? path: entryPath,
? ? ? ? ? ? ? ? size: stats.size,
? ? ? ? ? ? ? ? sizeFormatted: formatBytes(stats.size)
? ? ? ? ? ? ? });
? ? ? ? ? ? ? res();
? ? ? ? ? ? });
? ? ? ? ? });
? ? ? ? }
? ? ? });

? ? ? Promise.all(promises)
? ? ? ? .then(() => resolve(filesInfo))
? ? ? ? .catch(reject);
? ? });
? });
}

// 將文件信息導出到Excel
function exportToExcel(filesInfo, outputPath) {
? // 轉換數據格式以適應SheetJS
? const worksheetData = [
? ? ['文件名', '文件路徑', '大小(字節)', '大小(可讀格式)'],
? ? ...filesInfo.map(file => [file.name, file.path, file.size, file.sizeFormatted])
? ];

? // 創建工作表
? const worksheet = XLSX.utils.aoa_to_sheet(worksheetData);

? // 創建工作簿并添加工作表
? const workbook = XLSX.utils.book_new();
? XLSX.utils.book_append_sheet(workbook, worksheet, '文件信息');

? // 保存工作簿到文件
? XLSX.writeFile(workbook, outputPath);
? console.log(`已成功導出到 ${outputPath}`);
}

// 主函數
async function main() {
? try {
? ? // 獲取命令行參數
? ? const directoryPath = process.argv[2] || '.';
? ? const outputFilePath = process.argv[3] || '文件信息.xlsx';

? ? // 驗證目錄是否存在
? ? if (!fs.existsSync(directoryPath)) {
? ? ? console.error(`錯誤: 目錄 ${directoryPath} 不存在`);
? ? ? process.exit(1);
? ? }

? ? // 獲取文件信息
? ? console.log(`正在掃描目錄: ${directoryPath}`);
? ? const filesInfo = await getFilesInfo(directoryPath);
? ? console.log(`共找到 ${filesInfo.length} 個文件`);

? ? // 導出到Excel
? ? exportToExcel(filesInfo, outputFilePath);
? } catch (error) {
? ? console.error('發生錯誤:', error.message);
? ? process.exit(1);
? }
}

// 執行主函數
main(); ? ?

三、上面介紹的是用編程的方式獲取文件名和其對應的內存大小存放到Excel中,如果我們不懂編程就可以使用界面話的工具進行獲取。這里介紹使用“匯幫文件名提取器”軟件來獲取。

在進行文件信息提取操作前,務必對重要文件和數據進行備份。即使操作過程看似簡單,也可能因誤操作、軟件漏洞或系統異常導致文件丟失或損壞。如在使用命令行提取文件內存大小時,若輸入錯誤指令,可能意外刪除文件,備份可避免數據損失。?對于大規模文件信息提取任務,要實時監控操作進程。若發現系統資源占用過高(如 CPU、內存使用率持續居高不下)、提取速度異常緩慢或出現報錯提示,這時應該立即暫停操作,排查問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86407.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86407.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86407.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創建型設計模式——單例模式

單例設計模式 什么是創建型設計模式有哪些創建型設計模式 單例設計模式實現方法餓漢式單例懶漢式單例實現方法 CSDN——C單例模式詳解 單例設計模式是一種創建型設計模式 什么是創建型設計模式 創建型設計模式&#xff0c;就是通過控制對象的創建方式來解決設計問題。 有哪…

html 照片環 - 圖片的動態3D環繞

html 照片環 - 圖片的動態3D環繞 引言一、源碼二、圖轉base64參考鏈接 引言 效果展示&#xff1a; 一、源碼 原始圖片的base64編碼字符太多了&#xff0c;博客放不下&#xff0c;將圖片縮小后的加入html的源碼如下&#xff1a; <!DOCTYPE html> <html><hea…

ADIOS2 介紹與使用指南

文章目錄 ADIOS2 介紹與使用指南什么是ADIOS2?ADIOS2 的主要特點ADIOS2 核心概念ADIOS2 安裝Linux 系統安裝Windows 安裝 ADIOS2 基本使用C 示例Python 示例 ADIOS2 高級特性并行I/O流模式 ADIOS2 引擎類型性能優化建議總結 ADIOS2 介紹與使用指南 什么是ADIOS2? ADIOS2(Ad…

網絡安全 vs 信息安全的本質解析:數據盾牌與網絡防線的辯證關系關系

在數字化生存的今天&#xff0c;每一次手機支付、每一份云端文檔、每一條醫療記錄的背后&#xff0c;都矗立著這兩座安全堡壘。理解它們的協同邏輯&#xff0c;不僅是技術從業者的必修課&#xff0c;更是企業構建數字防護體系的底層認知 —— 畢竟當勒索軟件同時切斷 "護城…

ping-pong操作

常見不匹配的原因 瞬時數據率的差異&#xff1b; 數據順序的差異&#xff1b; 對比維度PipelineFIFOPing-Pong邏輯復制結構類型時序分級推進&#xff08;寄存器鏈&#xff09;環形隊列&#xff08;緩沖區&#xff09;雙緩沖區&#xff08;輪換使用&#xff09;功能塊并行&am…

21.合并兩個有序鏈表

將兩個升序鏈表合并為一個新的 升序 鏈表并返回。新鏈表是通過拼接給定的兩個鏈表的所有節點組成的。 思路&#xff1a;這里使用的主要數據結構是單鏈表。該算法采用經典的雙指針技術來合并列表。 A dummy node is created; this node does not hold any meaningful value b…

vue3中簡單易懂說明nextTick的使用

nextTick(): 等待下一次 DOM 更新刷新的工具方法 重點解釋: 當你在 Vue 中更改響應式狀態時&#xff0c;最終的 DOM 更新并不是同步生效的&#xff0c;而是由 Vue 將它們緩存在一個隊列中&#xff0c;直到下一個“tick”才一起執行。這樣是為了確保每個組件無論發生多少狀態改變…

gRPC 相關介紹

介紹 依賴兩大技術 HTTP/2 作為傳輸協議 gRPC 底層用 HTTP/2&#xff0c;它支持&#xff1a; 多路復用&#xff08;在一條 TCP 連接中并行傳輸多個請求和響應&#xff09;二進制傳輸&#xff08;更緊湊、高效&#xff09;流式傳輸&#xff08;客戶端流、服務端流、雙向流&…

PyTorch 模型鏡像下載與安裝指南

在國內&#xff0c;由于網絡限制&#xff0c;直接從 PyTorch 官方源下載可能會遇到速度慢或無法訪問的問題。為了解決這一問題&#xff0c;可以使用國內鏡像源來加速下載和安裝 PyTorch。 文章目錄 安裝指定版本的 PyTorch&#xff08;以 CUDA 11.8 為例&#xff09;安裝 CPU 版…

2025年SVN學習價值分析

?? 一、SVN的現狀與應用場景分析 仍在特定領域發揮作用 傳統企業維護場景&#xff1a;在金融、電信、政府等采用集中式開發流程的機構中&#xff0c;許多遺留系統仍使用SVN管理。這些系統往往體量龐大、架構穩定&#xff0c;遷移成本高&#xff0c;因此SVN短期內不會被完全替…

JavaScript中的10種排序算法:從入門到精通

作為前端開發者&#xff0c;排序算法是我們必須掌握的基礎知識。無論是在面試中&#xff0c;還是在實際開發中處理數據展示時&#xff0c;排序都是一個常見需求。今天&#xff0c;我將用通俗易懂的方式&#xff0c;帶你了解JavaScript中最常見的10種排序算法。 1. 冒泡排序 - …

【微信小程序】6、SpringBoot整合WxJava獲取用戶手機號

1、手機號快速驗證組件 手機號快速驗證組件 旨在幫助開發者向用戶發起手機號申請&#xff0c;并且必須經過用戶同意后&#xff0c;開發者才可獲得由平臺驗證后的手機號&#xff0c;進而為用戶提供相應服務。 該能力與手機號實時驗證組件的區別為&#xff1a; 手機號快速驗證…

redis8.0新特性:原生JSON支持詳解

文章目錄 一、寫在前面二、使用1、基本命令&#xff08;1&#xff09;JSON.SET 設置 JSON 值&#xff08;2&#xff09;JSON.GET 獲取 JSON 值&#xff08;3&#xff09;JSON.DEL 刪除 JSON 值&#xff08;4&#xff09;JSON.MGET 批量獲取&#xff08;5&#xff09;JSON.MSET …

QT網絡調試助手開發全指南,軟件設計圖預研,后續文檔跟進補充

網絡調試助手 1 TCP網絡調試助手 1.1 項目概述 網絡相關的一些基礎概念學習QTcpServer 學習QTcpClient 學習TextEdit特定位置輸入文字顏色學習網絡通信相關知識點 復習鞏固之前UI控件 程序運行如下圖所示 1.2 開發流程 1.3 QTtcp 服務器的關鍵流程 工程建立&#xff0c;需要在…

網絡分層模型與協議體系技術研究報告

網絡分層模型是計算機網絡體系結構的核心框架&#xff0c;它通過將復雜的網絡通信過程分解為多個層次&#xff0c;使網絡設計、實現和維護變得更加模塊化和標準化。 一、分層模型概念 1、OSI七層模型的詳細解析 開放系統互連參考模型&#xff08;OSI/RM&#xff09;是國際標…

C++面向對象7——C繼承與C++繼承對比、C++繼承詳解

繼承 C語言與C繼承機制的對比與實現 一、C語言模擬繼承的實現方法 C語言不支持面向對象編程的原生繼承機制&#xff0c;但可以通過結構體嵌套和函數指針組合來模擬。 1. 結構體嵌套實現"is-a"關系 // 基類&#xff1a;Shape typedef struct {int x;int y; } Sha…

運維打鐵: Windows 服務器基礎運維要點解析

文章目錄 思維導圖一級節點&#xff1a;Windows 服務器基礎運維要點 詳細內容解析系統安裝與配置硬件準備安裝介質選擇系統安裝過程初始配置 日常監控與維護性能監控服務狀態檢查日志管理 安全管理賬戶與權限管理防火墻配置病毒防護 備份與恢復備份策略制定備份工具使用恢復測試…

Python實例題:基于量子計算的優化算法實現(量子計算、優化理論)

目錄 Python實例題 題目 問題描述 解題思路 關鍵代碼框架 難點分析 擴展方向 Python實例題 題目 基于量子計算的優化算法實現&#xff08;量子計算、優化理論&#xff09; 問題描述 開發一個基于量子計算的優化算法實現&#xff0c;包含以下功能&#xff1a; 量子計…

基本算法--藍橋杯備考

1.前綴和 1.定義 假設有一個數組a[n],要計算它的前j個元素的和為 a[0]a[1]...a[j-1] 時間復雜度為O(j)&#xff0c;且隨著j的變大時間復雜度越來越大。 使用了前綴和算法則為 sum[j]-sum[j-1] 時間復雜度是O(1)&#xff0c;且數據越大優勢越明顯。 2.例題一 詳解見《可…

pgsql 中各個字符串的區別

PostgreSQL 提供了多種字符串類型&#xff0c;它們在存儲方式、長度限制和適用場景上有所不同。以下是主要字符串類型的詳細對比和區別&#xff1a; 一、核心字符串類型對比 CHAR(n)/CHARACTER(n) 特點&#xff1a;固定長度字符串&#xff0c;不足部分用空格填充最大長度&…