python进阶版2👏🎉

370 阅读2分钟

2.3 系统模块-sys

  • sys.argv
  • sys.path
  • sys.platform
  • sys.stdin
  • sys.stdout
  • sys.stderr
  • sys.modules

代码例子

系统有关的内置模块

import os,sys  

fname = 'c:/code/hello.py' #文件
fname = __file__     #  __file__ 表示当前文件的字符串
print(fname,type(fname))  
  • print(os.path.isdir(fname)) #False 是否是目录?

  • print(os.path.isfile(fname)) # False 是否是文件?

  • 目录名

    • print(os.path.dirname(fname))
  • 从路径把目录和文件名分开,返回元组

    • print(os.path.split(fname))
  • 把目录和文件名连接组成路径

    • print(os.path.join('e:/code/模块和包/','test_sys.py'))
  • 获取系统命令携带的参数(列表)

print(sys.argv)
print(sys.platform) 
print(sys.stdin)    #标准输入(键盘)
print(sys.stdout)  #标准输出(显示器)
print(sys.path) 
print(sys.builtin_module_names)

2.4 系统模块-os

  • os.path.isdir
  • os.path.isfile
  • os.path.getsize
  • os.path.split
  • os.path.join
  • os.path.dirname
  • os.path.basename
  • os.path.abspath
  • os.system

代码例子

import os
fname='模块和包\data.txt'

print(os.path.isfile(fname)) 
#绝对路径 
print(os.path.abspath(fname))
#文件大小 单位字节
print(os.path.getsize(fname)) 

#调用执行操作系统的指令
os.system('dir')

2.5 time-时间

  • 时间戳
  • 时间元组
  • 获取当前时间
  • asctime
  • strftime
  • strptime

代码例子

import time 

#time() - 返回当前时间   
#时间戳 - 以秒为单位的浮点小数
print(time.time()) 

#localtime() - 返回本地时间
# struct_time - 年月日时分秒构成的数据结构
print(time.localtime()) 
lt = time.localtime()
print(lt.tm_year,lt.tm_mon,lt.tm_mday,lt.tm_hour,lt.tm_min,lt.tm_sec) 

# strftime() - 格式化时间成字符串  f-format
ts = time.strftime('%Y-%m-%d %H:%M:%S',lt)
print("当前时间:",ts)   

# strptime() - 把字符串转换成时间 p - parse
t = time.strptime('1921-10-01 12:20:01','%Y-%m-%d %H:%M:%S')
print(t)   

2.6 datetime-日期和时间

  • datetime是Python处理日期和时间的标准库。
  • 获取当前日期和时间
  • 获取指定日期和时间
  • datetime<>timestamp
  • datetime<>str
  • 加减timedelta

代码例子

from datetime import datetime

# now() - 返回当前的日期和时间
print(datetime.now()) 

# datetime() 创建日期时间datetime
dt = datetime(1949,10,1) 
print(dt)
print(type(dt)) 

# strptime() - 字符串转换成日期事件datetime
dt2 = datetime.strptime('2021-6-23','%Y-%m-%d') 
print(dt2)

print(dt2-dt) 
- 计算今年过去了多少天

2.7 calendar-日历

  • 打印某月的月历
import calendar
 
cal = calendar.month(2016, 1)
print "以下输出2016年1月份的日历:"
print cal

2.8 JSON

  • JSON 是用于存储和交换数据的语法。

  • JSON 是用 JavaScript 对象表示法(JavaScript object notation)编写的文本。

  • 把JSON转为python

    • loads
import json
​
# 一些 JSON:
x =  '{ "name":"Bill", "age":63, "city":"Seatle"}'
​
# 解析 x:
y = json.loads(x)
​
# 结果是 Python 字典:
print(y["age"])
  • 把python转为JSON

    • dumps

3 文件和IO

3.1 文件打开

  • 用于创建、读取、更新和删除文件的函数
  • open
  • 打开文件的4种模式(r,a,w,x)
  • 处理模式:二进制、文本

3.2 文件读取

  • read
  • readline
  • close

代码练习

# 打开文件准备读入数据
f = open('键盘输入.txt',mode='rt', encoding='utf-8') 

#read() - 读数据,一次读取全部数据
# s = f.read()

#read(n) - 读取n个字符,从当前文件读取指针开始读
# s = f.read(10) 
# print(s)

# seek(n) - 文件读取指针后移n个字节,默认从文件起始位置开始
# f.seek(8) 
# s = f.read(5)
# print(s) 

# readlines() - 读取全部数据,返回列表
# ss = f.readlines() 
# print(ss) 

#readline()  - 读取1行
# s = f.readline()
# print(s) 
# s = f.readline()
# s = f.readline()
# s = f.readline()
# s = f.readline()
# s = f.readline()
#如果到达文件末尾,返回空字符串
# print(s+"<",len(s))  

# tell() - 当前文件指针的位置
print(f.tell())

#读文件全被内容,一行一行读
while True:
    s = f.readline()
    if s=='':
        break
    print(s,end='')




print(f.tell())


#关闭文件
f.close()

3.3 文件写入

  • 写入已有的文件
  • 创建新文件

代码例子

- 写文件
'''
mode - 文件打开模式
r   -   读 read
w   -   写 write
t   -   字符操作

encoding - 字符编码,常用utf-8   
'''
# 打开文件准备写入字符
f = open('学生.txt',mode='w',encoding='utf-8') 

# 写入数据
# f.write("Hello 你好!")
# f.write("Hello 你好!")
# f.write("Hello 你好!")

# f.writelines("Hello 您好!\n")
# f.writelines("Hello 您好!\n")
# f.writelines("Hello 您好!\n")

f.writelines(["Hello 你好!","Hello 你好!","Hello 你好!"])

# 关闭文件
f.close()   

读写

f = open('键盘输入.txt',mode='a',encoding='utf-8')

while True:
    s = input("请输入:\n")
    if s=='#':
        break 
    f.write(s)
    f.write("\n")  
    # 刷新
    f.flush() 

#关闭文件
f.close()

字节操作

3.4 删除文件

-   os.path.exists
-   rmdir
## 3.5 json文件
import json
user={'name':'zhang','age':20} 

# dumps() - 把python对象转成JSON字符串
s = json.dumps(user)
print(s,type(s)) 

# loads() - 把JSON字符串转成python对象
y = json.loads(s)
print(y['name'])


f=open('测试.txt','w',encoding='utf-8') 
# dump() - python对象写入json文件
json.dump(user,f) 
f.close()

f=open('测试.txt','r',encoding='utf-8') 
# load() - 读取json文件,转成python对象
x = json.load(f) 
print(x,type(x)) 
f.close() 

3.6 pickle

import pickle 

lst=["java","python","web"] 
f = open("测试pickle.txt",mode='wb') 
# dump() - 把python对象序列化成字节保存至二进制文件
pickle.dump(lst,f) 
f.close()

f = open("测试pickle.txt",mode='rb') 
# load() - 读取二进制文件反序列化成python对象
lst2 = pickle.load(f) 
print(lst2,type(lst2))   
f.close()

3.7 IO

sep - 分隔符,默认值是空格

print("hello",123,sep=',')

user={'name':'zhang','age':20} print(user)

% 格式化输出

print('%(name)s今年%(age)d岁了' % user)

print('%s今年%d岁了'%('小明',18))  

print('% 10d'%12)  # '        12'

print('%010.2f' % 12.34567)  #'0000012.35'


#format 格式化输出
print('{}今年{}岁了'.format('小明',18))  
print('{name}今年{age}岁了'.format(age=18,name='小明'))  
print('{}今年{}岁了'.format(18,'小明'))  

print('{name}今年{age}岁了'.format(**user)) 

lst = ['lisi',22]
print('{0[0]}今年{0[1]}岁了'.format(lst))   # 0[0]相当于lst[0]


print('{num:*^#16x}'.format(num=199)) 

print('{:>#8b},{:>#8o},{:>#8x}'.format(9,9,9)) 

print("{0:.2f},{0:e},{0:.2%}".format(30.1415926525))