目录
Python 代码实现
Python 代码解释
1.导入必要的模块:
2.函数 get_file_info:
3.函数 print_file_info:
4.主函数 main:
5.程序入口:
使用方法
Python 代码实现
python">import os
import stat
import sys
import time
from pathlib import Pathdef get_file_info(file_path):try:file_info = {}path = Path(file_path)file_info['fname'] = str(path.resolve())file_info['fsize'] = path.stat().st_sizefile_info['f_lm'] = time.strftime("%d/%m/%Y %I:%M:%S %p", time.localtime(path.stat().st_mtime))file_info['f_la'] = time.strftime("%d/%m/%Y %I:%M:%S %p", time.localtime(path.stat().st_atime))file_info['f_ct'] = time.strftime("%d/%m/%Y %I:%M:%S %p", time.localtime(path.stat().st_ctime))if path.is_file():with path.open('r') as f:lines = f.readlines()file_info['no_of_lines'] = len(lines)file_info['t_char'] = sum(len(line) for line in lines)elif path.is_dir():file_info['no_of_lines'] = "N/A (Directory)"file_info['t_char'] = "N/A (Directory)"else:file_info['no_of_lines'] = "N/A (Not a regular file)"file_info['t_char'] = "N/A (Not a regular file)"return file_infoexcept Exception as e:return {"error": f"Error: {e}"}def print_file_info(file_info):if "error" in file_info:print(file_info["error"])returnfile_info_keys = ("File Name","File Size","Last Modified","Last Accessed","Creation Time","Total Number of Lines","Total Number of Characters",)file_info_values = (file_info['fname'],f"{file_info['fsize']} bytes",file_info['f_lm'],file_info['f_la'],file_info['f_ct'],file_info['no_of_lines'],file_info['t_char'],)for key, value in zip(file_info_keys, file_info_values):print(f"{key} = {value}")if stat.S_ISDIR(os.stat(file_info['fname']).st_mode):print("This is a directory.")else:print("This is not a directory.")def main():file_name = input("Enter a file name: ")file_info = get_file_info(file_name)print_file_info(file_info)if __name__ == "__main__":main()
Python 代码解释
1.导入必要的模块:
python">import os
import stat
import sys
import time
from pathlib import Path
- os 和 stat:用于与操作系统交互,获取文件状态信息。
- sys:用于处理系统级别的操作,如退出程序。
- time:用于处理和格式化日期和时间。
- pathlib.Path:提供面向对象的文件系统路径操作,简化路径处理。
2.函数 get_file_info
:
python">def get_file_info(file_path):...
- 功能:获取指定文件或目录的详细信息。
- 参数:
file_path
:要获取信息的文件或目录的路径。
流程:
- 创建Path对象:
python">path = Path(file_path)
使用
pathlib.Path
处理文件路径,确保路径的正确性和可操作性。 -
获取基本信息:
python">file_info['fname'] = str(path.resolve()) file_info['fsize'] = path.stat().st_size
resolve()
:获取文件的绝对路径。st_size
:获取文件大小(以字节为单位)。 -
获取时间信息:
python">file_info['f_lm'] = time.strftime("%d/%m/%Y %I:%M:%S %p", time.localtime(path.stat().st_mtime) ) ...
使用
time.strftime
和time.localtime
将时间戳格式化为可读的日期和时间格式。st_mtime
:最后修改时间。st_atime
:最后访问时间。st_ctime
:创建时间(在Windows上)或最后状态时间(在Unix/Linux上)。 -
获取行数和字符数:
python">if path.is_file():with path.open('r') as f:lines = f.readlines()file_info['no_of_lines'] = len(lines)file_info['t_char'] = sum(len(line) for line in lines) ...
文件:如果路径指向一个文件,则读取所有行,计算总行数和总字符数。 目录:如果路径指向一个目录,则设置行数和字符数为“N/A”。
3.函数 print_file_info
:
python">def print_file_info(file_info):...
- 功能:格式化并打印文件信息。
- 参数:
file_info
:包含文件信息的字典。- 流程:
- 检查是否有错误:
如果存在错误信息,则打印错误并返回。python">if "error" in file_info:print(file_info["error"])return
- 定义并打印文件信息:
使用预定义的键和值,打印文件的基本信息。python">file_info_keys = ("File Name","File Size","Last Modified","Last Accessed","Creation Time","Total Number of Lines","Total Number of Characters", ) file_info_values = (file_info['fname'],f"{file_info['fsize']} bytes",file_info['f_lm'],file_info['f_la'],file_info['f_ct'],file_info['no_of_lines'],file_info['t_char'], ) for key, value in zip(file_info_keys, file_info_values):print(f"{key} = {value}")
- 判断是否为目录:
使用python">if stat.S_ISDIR(os.stat(file_info['fname']).st_mode):print("This is a directory.") else:print("This is not a directory.")
stat
模块判断文件是否为目录,并打印相应的信息。
4.主函数 main
:
python">def main():file_name = input("Enter a file name: ")file_info = get_file_info(file_name)print_file_info(file_info)
- 功能:作为程序的入口,获取用户输入并调用相应的函数处理。
- 流程:
- 获取用户输入:
提示用户输入要查询的文件或目录的路径。python">file_name = input("Enter a file name: ")
- 获取文件信息:
调用python">file_info = get_file_info(file_name)
get_file_info
函数获取文件信息。 - 打印文件信息:
调用python">print_file_info(file_info)
print_file_info
函数打印文件信息。
5.程序入口:
python">if __name__ == "__main__":main()
确保脚本作为主程序运行时,执行main
函数。
使用方法
1.运行脚本:
- 确保您的环境中已安装Python(建议使用Python 3)。
- 将上述代码保存为一个Python文件,例如
fileinfo.py
。 - 打开终端或命令提示符,导航到脚本所在的目录。
- 运行脚本:
python">python fileinfo.py
2.输入文件或目录路径:
- 程序会提示:
Enter a file name:
- 输入您想要查询的文件或目录的完整路径。例如:
或者:Enter a file name: /home/user/Documents/example.txt
python">Enter a file name: /home/user/Documents/
3.查看输出:
- 程序将输出文件或目录的详细信息,例如:
python">File Name = /home/user/Documents/example.txt File Size = 2048 bytes Last Modified = 15/01/2025 10:30:45 PM Last Accessed = 20/01/2025 09:15:30 AM Creation Time = 10/01/2025 08:20:10 AM Total Number of Lines = 100 Total Number of Characters = 5000 This is not a directory.
- 如果输入的是目录,输出将类似于:
python">File Name = /home/user/Documents/ File Size = 4096 bytes Last Modified = 20/01/2025 09:00:00 AM Last Accessed = 20/01/2025 09:00:00 AM Creation Time = 10/01/2025 08:00:00 AM Total Number of Lines = N/A (Directory) Total Number of Characters = N/A (Directory) This is a directory.
4.错误处理:
- 如果用户输入的文件或目录不存在或没有访问权限,程序将输出错误信息。例如:
python">Error: [Errno 2] No such file or directory: '/home/user/Documents/nonexistent.txt'
- 如果用户输入的是符号链接或其他非常规文件,程序将相应地处理并输出信息。