化身天使的博客

python学习笔记第1章:输入输出

1.1 输入

读取输入

a = input('hi: ')             #从键盘接收一个值,赋值给a,括号里是提示语

a = int ( input() )             #input()得到的值是字符串,int()函数将字符串转换为数字

a,b,c = (input("请输入三角形三边的长:").split())     接收多个输入字符

 

import sys

a = sys.stdin.readline()

 

#执行脚本时以终端里的内容作为参数

import sys

    code = sys.argv[1]     # 1是脚本名称后的第一个参数

    if len(sys.argv) == 3:    #参数长度: 脚本名,参数1,参数2

        src = sys.argv[2]

    else:

        src = '/abc'

接收的参数都是字符串类型, 数字要加引号

python  test.py   “select * from t1”   #0脚本名称,1参数1 , 2参数2

1.2 输出

print(type(a))             输出a的数据类型

1.2.1 输出格式

 

print('_' * 10)           连续输出10个_

print(f'a is {a}')           输出变量a,f花括号在引号内可引用变量,Python3

sep=''      指定输出时的分隔符,在引号外,写在最后

end=''      指定末尾符号,不加时默认换行(\n)

 

import sys

e = sys.stderr.write('')      标准错误输出

o = sys.stdout.write('')   标准输出

 

旧版输出格式

b=3  a=2

print('{}小于{}'.format(a,b))       输出2小于3 。 引号内花括号,后跟.format(),format里的变量值,代替花括号里的值

print('{1}个{0}'.format(a,b))    另一种形式,花括号内标注数字,指定调用的参数顺序

keyword = input('input keyword')

url = 'https://www.hiha.com/{ }/index.html'. format(keyword)

url = 'http://baidu.com/?wd='. format{ keyword }  

 

 

1.2.2 转义

\n           #换行 写在引号内

\t           # Tab

 

1.3 日志记录

1.3.1 输出到控制台

import logging

logging.basicConfig(level=logging.INFO,datefmt='%Y-%m-%d %H:%M:%S',format='%(asctime)s  - %(message)s')

logging.info('hi' + 3 + 'ha')     

 

#用加号连接,level只记录info及以上级别

 

1.3.2 输出到文件

import logging

logging.basicConfig(filename='tmp.log',filemode='w',level=logging.INFO,datefmt='%Y-%m-%d %H:%M:%S',format='%(asctime)s - %(message)s')  #w覆盖之前的文件,只保留本次的全部输出, 缺省追加

logging.info('hi' )

#logging.disable(logging.DEBUG)    #不记录debug及以下级别

#文件路径中,文件名可以不存在,路径必须事先存在

 

1.3.3 同时输出到文件和控制台

import logging

logging.basicConfig(filename='tmp.log',filemode='w',level=logging.INFO,format='%(asctime)s - %(message)s')

 

console = logging.StreamHandler()

console.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))   # 设置日志打印格式,缺省只显示message

logging.getLogger('').addHandler(console)    # 将handler添加到root logger

1.3.4 格式字符串

 %(levelno)s: 打印日志级别的数值

 %(levelname)s: 打印日志级别名称

 %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]

 %(filename)s: 打印当前执行程序名

 %(funcName)s: 打印日志的当前函数

 %(lineno)d: 打印日志的当前行号

 %(asctime)s: 打印日志的时间

 %(thread)d: 打印线程ID

 %(threadName)s: 打印线程名称

 %(process)d: 打印进程ID

 %(message)s: 打印日志信息

 

1.3.5 循环写入

按时间循环写入

th = logging.handlers.TimedRotatingFileHandler(filename=src,backupCount=3,encoding='utf-8',when='D', interval=1)

th.setFormatter(logging.Formatter('%(asctime)s - %(message)s'))

th.setLevel(logging.INFO)

th.suffix = "%Y-%m-%d.log"     #日志文件名

logging.getLogger('').addHandler(th)

#保留最近的30个日志文件,以天为单位,每天切换一次日志文件

#D:天, H:时,M:分, S:秒, W:周, midnight: 午夜(类似天)

posted @ 2021-08-07 19:40  化身天使  阅读(211)  评论(0)    收藏  举报