基本语法
关键字global的用法
global是Python中全局变量的关键字,可以使得一个局部变量变为全局变量(既可以是某对象函数创建,也可以是在本程序任何地方创建,可以被本程序的所有对象或函数引用)
注意如果使的函数可以改变全局变量的值,该全局变量声明必须在函数内
示例:
1 | x = 4 |
字典添加元素
- 单个添加,并且是在新元素的基础上添加(对已有元素会覆盖)
book_dict["owner"] = "tyson"
异常
Python被称为异常的对象用于管理程序执行期间发生的错误,当程序发生错误时可以使用try-except
语句来处理错误,保持程序运行。
- 程序崩溃时让用户看到
traceback
并不是好事,不仅是不美观,并且可能会泄露你的程序的信息,比如你程序的文件名称和无法正确运行的部分代码,攻击者很有可能根据这些信息判断出可以对代码发起怎样的攻击。
处理traceback
的错误
哪条语句导致错误就把哪条语句放在try后边
1 | try: |
如果后面还有其他代码块,程序将继续运行。如果有一些代码仅在try在执行时运行,可以使用else
语句
1 | try: |
程序种的实用方法
判断
是否为数字
1 | def is_number(s): |
Python对文件的操作
基本语法
file = open('your_file.txt','r')
操作方式参数’w’会改成写(创建)文件原有内容会被清空;’r’是只读;’a’是直接在尾部添加内容或者创建;f.close()
关闭文件f.read()
文件读取- 常用的文件操作形式
with
上下文打开(推荐)
操作完成后无需通过close()
关闭文件,并且安全系数更高
1 | import codecs |
对yaml
文件进行操作
yaml
语法
- 支持的数据类型:
字典、列表、字符串、布尔值、整数、浮点数、Null、时间等 - 基本语法规则:
- 大小写敏感
- 使用缩进表示层级关系
- 相同层级的元素左侧对齐
- 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
- 数组前加有 “-” 符号,符号与值之间需用空格分隔
- None值可用null 和 ~ 表示
- 多组数据之间使用3横杠—分割
#
表示注释,但不能在一段代码的行末尾加注释,否则会报错
第三方库PyYAML
读取/写入后各类型对应的格式
写入数据
- 打开后首先加入
yaml.dump(data=mydata, stream=f,allow_unicode=True)
防止写入的中文乱码 - 多组数据写入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34import yaml
apiData1 = {
"page": 1,
"msg": "地址",
"data": [{
"id": 1,
"name": "学校"
}, {
"id": 2,
"name": "公寓"
}, {
"id": 3,
"name": "流动人口社区"
}],
}
apiData2 = {
"page": 2,
"msg": "地址",
"data": [{
"id": 1,
"name": "酒店"
}, {
"id": 2,
"name": "医院"
}, {
"id": 3,
"name": "养老院"
}],
}
with open('./writeYamlData.yml', 'w', encoding='utf-8') as f:#注意这里文件名一定要用单引号,不然会出现奇怪的错误ing
yaml.dump_all(documents=[apiData1, apiData2], stream=f, allow_unicode=True)#若希望写入单组数据,使用dump,document改data
Pandas
csv
读取
注意你如果要把其他文件的格式转换成csv再读取,一定要使用表格工具另存为csv,而不是直接修改他的后缀名,直接修改后缀会导致无法打开的错误发生。
1 | import pandas as pd |
- 获取信息
1
2
3
4# 列名
print(df.columns)
# 索引
print(df.index) - 统计数据个数
1
2
3
4
5import pandas as pd
df = pd.read_csv("filename.csv")
count = df.shape[0]
print("数据个数:", count)
输出
- 打印函数
1
2
3
4
5
6print(type(df)) # pandas.core.frame.DataFrame 类
print(df.shape) # DataFrame 大小
print(df.head(5)) # 打印头部 5 行
print(df.tail(5)) # 打印尾部 5 行
print("1")
print(type(df['Feature'])) # pandas.core.series.Series 类1
2datacsv = pd.read_table('python.csv', ',')
#将文件内的所有数据全部按照逗号进行分隔。
Python调用
cmd
调用cmd来执行R语言脚本
最大的问题在于,实际上在python中敲入exit
后并不会结束cmd的进程,这时候会陷入一直循环,在python中也无法读出是否有输入输出等等,所以此处通过输出间隔时间来判断程序是否结束
1 | import subprocess |
下面是chat给的跳出循环方案,测试证明’Finished’根本不会输出
1 | # 读取命令的输出 |