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: 午夜(类似天)

浙公网安备 33010602011771号