目录
  1. 1. 输入与输出
    1. 1.1. 更好看的输出格式
    2. 1.2. 对文件进行读写操作
      1. 1.2.1. 文件对象的方法
    3. 1.3. 用json保存数据结构
输入与输出

输入与输出

更好看的输出格式

  • 处理所有的字符串
    用字符串的切割和连接操作创建自己需要的布局
  • 使用str(适用于人机交互)和repr(适用于解释器理解)输出
  • 格式化字符串或者使用str.format()方法
  • format_output
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python
# coding=utf-8

s = 'Hello world.'
print(str(s)) #字符串输出格式,用于将值转换为适用于人阅读的形式
print(repr(s)) #返回一个字符串,将值转换为适用于解释器的形式
print(str(1/7)) #将数值转换为字符串输出

x = 10*3.25
y = 200*200
s = 'the value of x is '+ repr(x) + ' ,and y is ' + repr(y) + '...'
print(s)

hello = 'Hello , world.\n'
print(hello) #print会将\n判断为换行符
hellos = repr(hello) #repr会将\n判断为一个字符
print(hellos)
print(repr((x,y,('spam','eggs')))) #repr的参可以是任何python对象

#输出平方和立方的两种方法
for i in range(1,11):
print(repr(i).rjust(2),repr(i*i).rjust(3),end=' ')#第一大列和第二大列所占空格分别为两个和三个(每一大列容纳酔大的空格数)
print(repr(i*i*i).rjust(4)) #第三大列所占空格为四个

for x in range(1,11):
print('{0:2d},{1:3d},{2:4d}'.format(x,x*x,x*x*x))#每列的空格由print()增加的
#repr.rjust()方法表示向右对齐

#str.zfill()表示向左填充0,如下
a = '12'.zfill(5) #只有两位,不足5位,需要在前面填充0
print(a)
b = '-3.14'.zfill(7) #所有字符有5位,不足7位,需要在前面填充0
print(b)
c = '3.14159265359'.zfill(5)#由于字符串位数比给定的大,不需要填充
print(c)
d = '3.1416'.zfill(5)
print(d)
#当字符串中的字符数少于.zfill中的数字,则在前面填充0;当等于或大于时,正常输出字符串。

#.format()函数用法,format输出格式其实就是str.format()形式
print('we are the {},who say "{}"!'.format('knight','Ni'))
print('{0} and {1}.'.format('spam','eggs'))#{}中数字表示所在位置
print('{1} and {0}.'.format('spam','eggs'))#{0}表示.format中的第二个参数在输出参数中的第一个位置

#关键字参数用在format中
print('this {food} is {adjective}.'.format(food='spam',adjective='absolutely horrible'))#输出关键字参数对应的键值

#位置与关键字参数组合
print('the story is {0},{1} and {other}.'.format('Bill','Manfred',other='Georg'))

#!a(apply acsii),!r(apply repr),!s(apply str).就是将输入的转换为对应的格式
contents = 'eels'
print('my hovercraft is full of {}.'.format(contents))
print('my hovercraft is full of {!r}!'.format(contents))#转换为repr格式
print('my hovercraft is full of {!a}.'.format(contents))#转换为ascii格式
print('my hovercraft is full of {!s}.'.format(contents))#转换为str格式

#用‘':',':'之后的整数表示字符所需要的最小范围
table = {'Sjoerd':4127,'Jack':4098,'Dcab':7679}
for name,phone in table.items(): #table.items表示关键字参数
print('{0:10} ==> {1:10d}'.format(name,phone)) #第一个表示输出的是字符,第二个表示输出的是数字,通过位置表示键值

#通过关键字(用0[keyword]表示关键字参数)来表示键值(用d表示键值),只需要输出字典
table = {'Sjoerd':4127,'Jack':4098,'Dcab':6079493}
print('Jack:{0[Jack]:d}; Sjoerd:{0[Sjoerd]:d};'' Dcab:{0[Dcab]:d}'.format(table))
print('Jack:{0[Jack]:d}; Sjoerd:{0[Sjoerd]:d};'.format(table))

#用'**'表示关键字参数,与内建函数vars(返回一个包含本地变量的字典)联合使用
print('Jack:{Jack:d}; Sjoerd:{Sjoerd:d};'' Dcab:{Dcab:d}'.format(**table))

#老式的string格式
import math
print('the value of PI is approximately %5.3f.'%math.pi)
  • 输出
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Hello world.
'Hello world.'
0.14285714285714285
the value of x is 32.5 ,and y is 40000...
Hello , world.

'Hello , world.\n'
(32.5, 40000, ('spam', 'eggs'))
1 1 1
2 4 8
3 9 27
4 16 64
5 25 125
6 36 216
7 49 343
8 64 512
9 81 729
10 100 1000
1, 1, 1
2, 4, 8
3, 9, 27
4, 16, 64
5, 25, 125
6, 36, 216
7, 49, 343
8, 64, 512
9, 81, 729
10,100,1000
00012
-003.14
3.14159265359
3.1416
we are the knight,who say "Ni"!
spam and eggs.
eggs and spam.
this spam is absolutely horrible.
the story is Bill,Manfred and Georg.
my hovercraft is full of eels.
my hovercraft is full of 'eels'!
my hovercraft is full of 'eels'.
my hovercraft is full of eels.
Jack ==> 4098
Dcab ==> 7679
Sjoerd ==> 4127
Jack:4098; Sjoerd:4127; Dcab:6079493
Jack:4098; Sjoerd:4127;
Jack:4098; Sjoerd:4127; Dcab:6079493
the value of PI is approximately 3.142.

对文件进行读写操作

  • f.open(filename,mode) filename:文件名;mode:进行操作的方式,读操作(r),写操作(w),只能对文件增加数据(a),进行读写操作(r+)
  • 用with关键字进行文件操作,在完成任务后将会关闭文件,如果不用,需要使用f.close()函数关闭文件
  • file_read_write
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# coding=utf-8

with open('workfile') as f:#为open()取别名
read_data = f.read() #workfile中读取的数据放入read_data
print(read_data)
print(f.closed) #标记文件是否已经关闭,true表示正确关闭
#print(f.read()) #运行错误,表示文件确实被关闭
#f.close()
#print(f.read()) #文件
  • 输出
1
2
3
4
5
6
7
8
9
10
undefined

undefined

```
>>> f.close()
>>> f.read()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file
文件对象的方法
  • f.read() :读取文件
  • f.readline() :从文件中读取单行(用\n结尾)
  • file_object_methods
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
#!/usr/bin/env python
# coding=utf-8

f = open('workfile') #打开文件
print(f.read()) #读取文件
print(f.read()) #由于已经读取过了,再读取为空

f = open('workfile1') #打开文件
print(f.readline()) #只读取一行,不能与f.read一起用
print(f.readline()) #再读取只能读取下一行,读取了的不能再读取

#用循环将文件中的文本取出
for line in f:
print(line,end=' ')
f = open('workfile1', 'w') #打开文件,并支持写入
print(f.write('this is a text\n')) #向文件写入文本,返回写入文本的长度

#将其他类型转换为字符串
f = open('workfile1', 'w') #打开文件,并支持写入
value = ('answer',42) #元组
s = str(value) #将元组转换为字符串
f.write(s) #将s写入f文件中,需要有w权限

print('please input:\n')
f = open('workfile3','rb+') #表示有读取文件,可以追加binary类型数据
print(f.write(b'0123456789abcdef')) #写入binary类型数据
print(f.seek(5)) #寻找文件中第六个字节
print(f.read(1))
print(f.seek(-3,2))
print(f.read(1))

  • 输出
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
asdfdgfdhgfj
this a double text

this is a text


('answer', 42)


15
please input:

16
5
b'5'
15
b'f'

用json保存数据结构

import json
json.dumps()
json.dumps(x,f)
json.load()

文章作者: rack-leen
文章链接: http://yoursite.com/2019/05/03/Python/python-tutorial-notes/chapter7_input_and_output/input-and-output/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 rack-leen's blog
打赏
  • 微信
  • 支付宝

评论