python IO类是指python中输入,输出,文件操作等,主要有print、input、open
等。具体可见下表:
函数 | 作用 |
---|---|
file (filename [,mode[,bufsize]] ) | file类型的构造函数,作用为打开一个文件,当文件不存在时,且mode为写或追加时,作用为创建一个文件。filename:文件名称;mode:r:读,w:写,a:追加;bufsize:0:表示不缓冲,1:表示缓冲,大于1表示缓冲区的大小 |
input | 获取用户的输入 |
open | 打开文件 |
打印函数,打印要打印的内容 |
一、print
我们可以在pycharm中输入print(),然后按下alt+鼠标左键点击查看print函数的用法。如下:
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
"""
pass
我们可以看到print函数参数主要有*args、sep、end和file,作用如下:
参数 | 作用 |
---|---|
*args | 不定长参数 例如: “py is the best”,“green tea”,“你是个好人!” |
sep | 输出不定长参数的分隔符 例如: sep = “:” |
end | 控制输出后的格式:"\n"," “,”…" |
file | 可以控制数据输出到控制台还是文件夹中 |
如:
print("hello", "world", sep=",")
输出:
hello,world
end的用法如下:
for i in range(4):
print(i)
输出:
0
1
2
3
当加入end参数时,变为
for i in range(4):
print(i, end="")
print("hello", "world", sep=",")
输出:
0123hello,world
end是改变输出后的格式,空格等同于不换行。
二、input
input函数主要是获取键盘的输入,在py2.X版本中还有raw_input这种输入,作用是它会把输入都当做字符串处理,在py3.X版本中没有raw_input了,只有input这一种,返回str类型。
同样我们也可以查看input的用法,如下:
def input(*args, **kwargs): # real signature unknown
"""
Read a string from standard input. The trailing newline is stripped.
The prompt string, if given, is printed to standard output without a
trailing newline before reading input.
If the user hits EOF (*nix: Ctrl-D, Windows: Ctrl-Z+Return), raise EOFError.
On *nix systems, readline is used if available.
"""
pass
三、open
python的open函数用于打开一个文件,并返回文件对象,是文件处理过程中常用的函数,如果文件无法被打开,会抛出OSError。
open函数的完整用法如下:
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
参数及其作用如下表:
参数 | 作用 |
---|---|
file | 必需,文件路径(相对或者绝对路径) |
mode | 可选,文件打开模式 |
buffering | 设置缓冲 |
encoding | 一般使用utf8 |
errors | 报错级别 |
newline | 区分换行符 |
closefd | 传入的file参数类型 |
参数mode一共有如下几种类型:
模式 | 作用 |
---|---|
r | 只读模式 |
w | 写入模式,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
x | 写入模式,新建一个文件用于写入,如果文件已存在则会报错 |
a | 追加模式,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾 |
b | 二进制模式 |
t | 文本模式,默认 |
+ | 打开一个文件用于更新,可以读取也可以写入。+一般和别的模式合用,如r+:表示打开一个文件用于读写;w+:表示打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
U | 通用换行模式(不推荐) |
四、json转换
json是一种数据格式,百度百科对其解释为“JSON(JavaScriptObject Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率”。主要在前端用的比较多,python中需要了解一定的json转换,在爬虫时有较大的帮助。
函数 | 作用 |
---|---|
json.dumps | 将python对象编码为json字符串 |
json.loads | 将已编码的json对象转换为python对象 |
1、把python对象转换为json对象:
import json
data = [{"md":"py","dennis":"java","jj":"groovy"},{"keven":"brave","david":"solar"}]
json_data = json.dumps(data,indent=4,sort_keys=True)
print(type(json_data))
print(json_data)
输出:
<class 'str'>
[
{
"dennis": "java",
"jj": "groovy",
"md": "py"
},
{
"david": "solar",
"keven": "brave"
}
]
注意此时的“str”是json类型的str
2、把json对象转换为python对象
json_data = '{"mdeng":"py","dennis":"java","jj":"groovy","keven":"brave","david":"solar"}'
text = json.loads(json_data)
print(type(text))
print(text)
输出:
<class 'dict'>
{'mdeng': 'py', 'dennis': 'java', 'jj': 'groovy', 'keven': 'brave', 'david': 'solar'}
五、参考资料
https://www.runoob.com/python/python-func-open.html
https://baike.sogou.com/v25646.htm?fromTitle=JSON
https://mp.weixin.qq.com/s?src=11×tamp=1586221747&ver=2263&signature=beqsaP1A9-YHH5n2vMfSoLcvzwKWPF4JpEdhL*Nla3EIvfhDka74Po1VvL0gvFLj9v4-0As8g0waBLurIRlLUNzB-vIe5lChnBHewpSW-dSr32RHriqi71Z2ec0kUhfi&new=1