关键词

python sys,os,time模块的使用(包括时间格式的各种转换)

Python中的sys, os, time模块都是非常常用的标准库模块。其中sys模块主要用于提供对解释器相关的信息和参数的访问,os模块主要用于操作系统相关的操作,time模块主要用于处理时间相关的操作。下面分别进行详细讲解。

一、sys模块

1.1 获取命令行参数

sys.argv是一个包含命令行参数的列表,第一个元素是脚本的名称,之后的元素是脚本的参数。下面是一个例子:

import sys

if len(sys.argv) < 2:
    print("Usage: python script.py arg1 arg2...")
    sys.exit(1)

print("The command line arguments are:")
for arg in sys.argv[1:]:
    print(arg)

在上面的代码中,我们先判断命令行参数是否足够,如果不足,就输出使用说明并退出程序;如果足够,就遍历命令行参数并将它们打印出来。

1.2 获取当前Python解释器的信息

sys模块还提供了一些函数用于获取当前Python解释器的信息,比如:

import sys

print(sys.version)  # 获取Python解释器的版本信息
print(sys.platform) # 获取Python解释器所在的平台信息
print(sys.maxsize)  # 获取Python整型的最大值

在上面的代码中,我们使用了sys.version、sys.platform和sys.maxsize函数分别获取Python解释器的版本、平台和最大整数值。

二、os模块

2.1 文件和目录操作

os模块主要用于对操作系统的文件和目录进行访问和操作。比如下面是一个例子,用于遍历一个目录:

import os

def walk_dir(path):
    for root, dirs, files in os.walk(path):
        # 遍历当前目录下的所有文件夹和文件
        for filename in files:
            print(os.path.join(root, filename))

if __name__ == '__main__':
    walk_dir('.')

在上面的代码中,我们使用了os.walk函数遍历当前目录下的所有文件夹和文件,并输出它们的路径。

2.2 获取文件和目录的属性

os模块还提供了一些函数用于获取文件和目录的属性,比如:

import os

filename = 'example.txt'

print(os.path.isfile(filename))     # 判断文件是否存在
print(os.path.getsize(filename))    # 获取文件大小
print(os.path.getmtime(filename))   # 获取文件修改时间
print(os.path.abspath(filename))    # 获取文件的绝对路径

在上面的代码中,我们使用了os.path.isfile、os.path.getsize、os.path.getmtime和os.path.abspath函数分别判断文件是否存在、获取文件大小、获取文件修改时间和获取文件的绝对路径。

三、time模块

3.1 时间戳和时间的相互转换

time模块主要用于处理时间相关的操作。比如,我们可以使用time.time()函数获取当前时间的时间戳,然后使用time.localtime()函数将时间戳转换为本地时间:

import time

timestamp = time.time()
localtime = time.localtime(timestamp)

print("Timestamp:", timestamp)
print("Localtime:", localtime)

在上面的代码中,我们使用了time.time和time.localtime函数分别获取当前时间的时间戳和本地时间。

如果要将本地时间转换为时间戳,可以使用time.mktime()函数:

import time

localtime = (2022, 2, 22, 22, 22, 22, 2, 53, 0)
timestamp = time.mktime(localtime)

print("Localtime:", localtime)
print("Timestamp:", timestamp)

在上面的代码中,我们使用了time.mktime函数将时间元组转换为时间戳。

3.2 时间的格式化和解析

time模块还提供了一些函数用于时间格式化和解析,比如:

import time

now = time.time()
localtime = time.localtime(now)

print(time.strftime("%Y-%m-%d %H:%M:%S", localtime))  # 时间的格式化
print(time.strptime("2022-02-22 22:22:22", "%Y-%m-%d %H:%M:%S"))  # 时间的解析

在上面的代码中,我们使用了time.strftime和time.strptime函数分别进行时间的格式化和解析。其中time.strftime函数将时间元组转换为指定格式的字符串,time.strptime函数将字符串解析为时间元组。

四、示例说明

4.1 获取文件夹中所有文件并按时间排序

import os
from datetime import datetime

def get_files_sorted_by_time(path, reverse=False):
    files = []
    for filename in os.listdir(path):
        filepath = os.path.join(path, filename)
        if os.path.isfile(filepath):
            mtime = os.path.getmtime(filepath)  # 获取文件的修改时间
            files.append((filepath, mtime))

    # 按文件的修改时间排序
    files_sorted = sorted(files, key=lambda x: x[1], reverse=reverse)
    return files_sorted

if __name__ == '__main__':
    path = '.'
    files_sorted = get_files_sorted_by_time(path)
    for fileinfo in files_sorted:
        filepath, mtime = fileinfo
        time_str = datetime.fromtimestamp(int(mtime)).strftime("%Y-%m-%d %H:%M:%S")
        print(filepath, time_str)

在上面的代码中,我们使用了os.listdir函数遍历文件夹中的所有文件,然后使用os.path.getmtime函数获取文件的修改时间。最后使用sorted函数进行排序,并使用datetime.fromtimestamp函数将修改时间转换为本地时间。

4.2 获取本地时间并输出到文件

import os
import time

def write_localtime_to_file(filename):
    localtime = time.localtime()
    localtime_str = time.strftime("%Y-%m-%d %H:%M:%S", localtime)

    with open(filename, 'w') as f:
        f.write(localtime_str)

if __name__ == '__main__':
    filename = 'localtime.txt'
    write_localtime_to_file(filename)
    print("Write localtime to file success!")

在上面的代码中,我们使用了time.localtime和time.strftime函数获取本地时间,并将时间字符串写入到文件中。最后,输出成功的提示信息。

本文链接:http://task.lmcjl.com/news/15187.html

展开阅读全文