1、python 将print输出的内容保存到txt文件中

import sys
import os

class Logger(object):
    def __init__(self, filename="Default.log"):
        self.terminal = sys.stdout
        self.log = open(filename, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)

    def flush(self):
        pass
path = os.path.abspath(os.path.dirname(__file__))
type = sys.getfilesystemencoding()
sys.stdout = Logger('a.txt')

print(path)
print(os.path.dirname(__file__))
print('------------------')

2、txt 读写、追加、覆盖

1) 新增覆盖

f = "lucky.txt"

a =8
with open(f,"w") as file:   #”w"代表着每次运行都覆盖内容
    for i in range(a):
        file.write(str(i) + "d" + " "+"\n")
    a +=1

2) 追加

f = "lucky.txt"

a =8
with open(f,"a") as file:   #只需要将之前的”w"改为“a"即可,代表追加内容
    for i in range(a):
        file.write(str(i) + "d" + " "+"\n")
    a +=1

思路

#1、 创建以step+学习率命名的txt文件
#2、 在Print 处、打开该文件

如何根据TXT 中的文件绘制图

txt 格式如下:

## 从.txt文件中读取数据
def loadData(flieName):
    inFile = open(flieName, 'r')#以只读方式打开某fileName文件

    #定义两个空list,用来存放文件中的数据
    X = []
    y = []

    for line in inFile:
        trainingSet = line.split(',') #对于每一行,按','把数据分开,这里是分成两部分
        X.append(trainingSet[0]) #第一部分,即文件中的第一列数据逐一添加到list X 中
        y.append(trainingSet[1]) #第二部分,即文件中的第二列数据逐一添加到list y 中

    return (X, y)    # X,y组成一个元组,这样可以通过函数一次性返回
## 绘制该文件中的数据
## 需要引入pylab库,里面用到的函数和MATLAB里的非常类似
def plotData(X, y):
    length = len(y)

    pylab.figure(1)

    pylab.plot(X, y, 'rx')
    pylab.xlabel('Population of City in 10,000s')
    pylab.ylabel('Profit in $10,000s')

    pylab.show()#让绘制的图像在屏幕上显示出来

(X,y) = loadData('ex1data1.txt')

plotData(X,y)