1. 获取当前工作空间、修改路径
import os
os.getcwd() #显示结果'C:\\Windows\\system32'
os.chdir('E:\\MachineLearning\\machinelearninginaction\\Ch04')
2. 如何加载自定义的py文件
比如我自定义了一个叫“operator.py”的文件,加载的办法为:将这个文件放置在python安装目录的Lib文件夹下,然后直接import operator即可。
3. 读取文件生成二维列表的方法
注意以下两者的区别:
for i in range(len(dataset)) #i是一个整型
for i in dataset #如果是文本数据,i是其中的一行
4. A=B
无论是什么类型,直接用A=B,A和B都会指向同一个地址空间,无论改变哪一个另外一个都会发生改变
5. ASCII码
数字48(0)——57(9)
字母65(A)——90(Z)
97(a)——122(z)
6.中文乱码的问题
改文件编码方式为utf-8,在打开文件的时候(python3),要加上第三个参数encoding=‘utf8’。
读取文件首行多了"\ufeff"字符串问题的解决办法:第三个参数encoding=‘utf8’改为encoding='utf-8-sig’,简单理解为忽略utf编码文件的编码信息声明。
其他问题可参考:https://www.cnblogs.com/mingjiatang/p/4890420.html
7. 读写文件小结
以读取CSV文件为例
文件内容截图
打开文件
用with open(……) as ……的打开方式是为了自动调用f.close(),保证无论是否出错都能正确地关闭文件。
with open('E:/AreaRect/data.csv', 'r') as f:
print(f.read())
结果
读取数据
python文件对象提供了三个“读”方法: read()、readline() 和 readlines()
- read()——每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。
- readlines() ——一次读取整个文件,自动将文件内容分析成一个行的列表。
- readline() ——每次只读取一行,通常比readlines() 慢得多。
输入
users=[]
pay=[]
rest=[]
with open('E:/AreaRect/data.txt', 'r',encoding='utf-8-sig') as f:
for line in f.readlines():
line=line.rstrip('\n').split(',\t')
users.append(line[0])
pay.append(line[1])
rest.append(line[2])
输出
写入数据
- write()——和read对应
- writelines()——和readlines()对应,不会自动写入换行符
写入
with open('E:/AreaRect/dataNew.txt', 'w+') as f:
f.writelines(users)
结果
写入
with open('E:/AreaRect/dataNew.txt', 'w+') as f:
for i in range(len(users)):
f.write(users[i]+',')
f.write(str(pay[i])+',')
f.write(str(rest[i])+'\n')
结果
8. 生成值全为0的列表
A = [0 for _ in range(len(B))]
9. yield关键字
以生成斐波那契数列为例,输入如下代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
def fab(max):
n, a, b = 0, 0, 1
while n < max:
yield b # 使用 yield
a, b = b, a + b
n = n + 1
for n in fab(5):
print(n)
结果
简单地讲,yield 的作用就是把一个函数变成一个 generator,带有 yield 的函数不再是一个普通函数,Python 解释器会将其视为一个 generator,调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,直到再次遇到 yield。
要注意区分 fab 和 fab(5),fab 是一个 generator function,而 fab(5) 是调用 fab 返回的一个 generator,好比类的定义和类的实例的区别。
网友评论