学习python遇到的问题

python 重定向输入:io.UnsupportedOperation: not readable

两处错误
一、用open打开一个文件,此时调用的是w写入模式,下面使用read是没有权限的,得使用w+读写模式
二、使用write写入一个字符s,但是此时并没有真正的写入,而是还存在与内存中。此时执行read读取的为空字符。需要执行a.close()以后,再使用a=open(“D://2.txt”)
a.read()才能够读取到数据。

把文件设为stdin后如何读数据

可以借助

sys.stdin.readline() 
sys.stdin.read() 
sys.stdin.readlines()

也可以直接用input()实现交互

坑点:在读的时候必须以只读的方式打开,图一是错误的,图二才能正确读出数据

图一图二

事实上,图二之所以能够读出数据,是因为指针偏移量重置为0了,在图一的flush后加上seek(0)即可,如图三

图三

使用with语句改进:

import sys
import random

with open("in.txt",'w+',encoding='utf8') as f:
    sys.stdin = f
    f.write("55")
    f.flush()
    f.seek(0)
    line = sys.stdin.readline()
    count = 0
    while True:
        print(random.randint(0, int(line)))
        count += 1
        if count == 50:
            break

2022年4月17日15:10:34

python 字符串转为元组再添加进列表

    while True:  # 获取数据
        line = input("请输入学生的姓名,性别,年龄,语文成绩,数学成绩,英语成绩(输入-1时退出):")
        if line == '-1':
            print("已退出")
            break
        # rows.append(tuple(line))
        line = tuple(line.split(','))
        rows.append(line)

rows.append(tuple(line)) 如果直接如此,则一个字符为一个元素

[('a', 'm', 'y', ',', 'w', 'e', 'm', 'a', 'n', ',', '1', '8', ',', '8', '5', ',', '8', '5', ',', '8', '5')]

line = tuple(line.split(',')) 应该这样写,会以逗号为分隔符确定元素

('amy', 'weman', '18', '85', '85', '85')

posted @ 2022-10-03 13:08  mykaneki  阅读(40)  评论(0编辑  收藏  举报