Python sys、os、time及datetime模块核心用法与时间格式转换详解
本文详细解析Python中sys、os、time及datetime四大模块的核心功能。涵盖sys.argv参数传递、编码设置及路径操作;os模块的文件目录管理与Shell命令执行;重点演示time与datetime模块中时间戳、结构化时间与字符串之间的多种格式转换方法,助力开发者高效处理系统交互与时间数据。
sys模块
sys.argv:用于从程序外部向程序内部传递参数。
位置参数argv[0]代表当前执行的Python文件本身,运行方式如 python xx.py 参数1 参数2 等。
self = sys.argv[0] name = sys.argv[1] age = sys.argv[2] print self, name, age
sys.getdefaultencoding():用于获取系统当前的默认编码,通常默认为ascii。
print sys.getdefaultencoding()
sys.setdefaultencoding():用于设置系统默认编码。执行dir(sys)时不会显示此方法,在解释器中直接执行可能报错,需先执行reload(sys),再执行setdefaultencoding('utf8'),从而将系统默认编码设置为utf8(在Python 2.7环境中可能需要此操作)。
reload(sys)
sys.setdefaultencoding('utf8')
sys.path:获取指定模块搜索路径的字符串集合。
sys.path
sys.platform:获取当前运行的系统平台标识。
print sys.platform
sys.exit()
功能说明:当程序执行到主程序末尾时,解释器会自动退出。若需中途强制退出程序,可调用sys.exit函数,该函数接受一个可选的整数参数并返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。其中,0表示正常退出,其他数值表示异常退出。
for i in range(1, 10): print '第%s次:' % i, i if i == 5: print '第五次退出' sys.exit(0)
os模块
1. os.name():判断当前正在使用的平台,Windows系统返回‘nt’,Linux系统返回'posix'。
print os.name()
2. os.getcwd():获取当前工作目录。
print os.getcwd()
3. os.listdir():列出指定目录下所有的文件和目录名。
print os.listdir('.')
4. os.remove():删除指定的文件。
os.remove('aaa.txt')
5. os.rmdir():删除指定的目录。
os.rmdir('C://Users/xiaoxinsoso/Desktop/aaa')
6. os.mkdir():创建单层目录。注意:若需递归创建多级目录,可使用os.makedirs()。
os.makedirs('aaa/aaa')
7. os.path.isfile():判断指定对象是否为文件,是则返回True,否则返回False。
print os.path.isfile('ccc.txt')
print os.path.isfile('aaa')
8. os.path.isdir():判断指定对象是否为目录,是则返回True,否则返回False。例如:
print os.path.isdir('aaa')
print os.path.isdir('ccc.txt')
9. os.path.exists():检验指定的对象是否存在,存在则返回True,否则返回False。例如:
print os.path.exists('bbb')
print os.path.exists('aaa')
print os.path.exists('ccc.txt')
10. os.path.split():返回路径的目录部分和文件名部分。例如:
print os.path.split('C://Users/xiaoxinsoso/Desktop/aaa/ccc.txt')
11. os.getcwd():获取当前工作目录。
print os.getcwd()
12. os.system():执行Shell命令。
注意:在执行Shell命令时,如需调用Python之前的变量,可采用如下方式:
var = 123
os.environ['var'] = str(var) # 注意此处[]内得是 “字符串”
os.system('echo $var')
os.system('dir')
13. os.chdir():将当前目录更改为指定目录。
14. os.path.getsize():获取文件大小,若指定对象为目录,则返回0。
print os.path.getsize('ccc.txt')
15. os.path.abspath():获取绝对路径。例如:
print os.path.abspath('.')
16. os.path.join(path, name):连接目录和文件名。例如:
print os.path.join('c://user/xiaoxinsoso/', 'wenjian.txt')
17. os.path.basename(path):返回文件名。
print os.path.basename('ccc.txt')
18. os.path.dirname(path):返回文件所在的路径。
print os.path.dirname('C://Users/xiaoxinsoso/Desktop/aaa/ccc.txt')
19. 获取程序所在的实际目录。
if __name__ == "__main__": print os.path.realpath(sys.argv[0]) print os.path.split(os.path.realpath(sys.argv[0])) print os.path.split(os.path.realpath(sys.argv[0]))[0]
time模块
ticks = time.time() print "当前时间戳为:", ticks
获取当前时间。
localtime = time.localtime(time.time()) print "本地时间为 :", localtime
获取格式化后的时间。
localtime = time.asctime(time.localtime(time.time())) print "本地时间为 :", localtime
格式化日期。
格式化为2017-01-22 16:36:27形式。
print time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
格式化为Sun Jan 22 16:36:27 2017形式。
print time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
将格式字符串转换为时间戳。
a = "Sat Mar 28 22:24:24 2016" print time.mktime(time.strptime(a, "%a %b %d %H:%M:%S %Y"))
获取某月的日历。
cal = calendar.month(2017, 1) print "以下输出2016年1月份的日历:" print cal
datetime模块
datetime类型时间处理。
now = datetime.datetime.now() print now now = date time.datetime.now() yes_time = now + date time.timedelta(days=-1) # 前一天的时间
datetime转换为string。
strdatetime = now.strftime("%Y-%m-%d %H:%M:%S") # 以字符串形式显示时间,显示全部
strdatetime1= now.strftime("%Y-%m-%d") # 以字符串形式显示时间,只显示日期
print strdatetime
print strdatetime1
string转换为datetime。
datetime1 = datetime.datetime.strptime(strdatetime1, "%Y-%m-%d") print datetime1
datetime转换为时间戳。
time_time = time.mktime(datetime1.timetuple()) print time_time
时间戳转换为string。
time1 = time.strftime('%Y-%m-%d',time.localtime(time_time))
print time1
date转换为datetime。
date1 = datetime.date(2012, 11, 19) date = datetime.date.today() print date print datetime.datetime.strptime(str(date),'%Y-%m-%d') #将date转换为str,在由str转换为datetime print datetime.datetime.strptime(str(date1),'%Y-%m-%d') #将date转换为str,在由str转换为datetime
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













