'''
Python3输入和输出
'''
'''
Python两种输出值的方式: 表达式语句和 print() 函数。
将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现
str() 将对象转化为适于人阅读的形式。
repr() 将对象转化为供解释器读取的形式。
返回一个对象的 string 格式。
str.format() 格式化字符串的函数
基本语法是通过 {} 和 : 来代替以前的 % 。
括号及其里面的字符 (称作格式化字段) 将会被 format() 中的参数替换。
'''
s = 'Hello Python3'
print(str(s))
print(repr(s))
dict1 = {'key1': 'val1','key2': 'val2',}
print(str(dict1))
print(repr(dict1))
str = "{}的网址:{}";
print(str.format('百度','www.baidu.com'))
str = "{0}的网址:{1}";
print(str.format('百度','www.baidu.com'))
str = "{1}的网址:{0}";
print(str.format('百度','www.baidu.com'))
str = "{name}的网址:{website}";
print(str.format(name='百度',website='www.baidu.com'))
str = "{0}的网址:{1},请查询{keyword}信息";
print(str.format('百度','www.baidu.com',keyword='动物'))
str = "{!s}的网址:{!r},请查询{keyword}信息";
print(str.format('百度','www.baidu.com',keyword='动物'))
print('将5.2352353保留三位小数后为:{0:.3f}'.format(5.2352353))
dict1 = {'key1': 'val1','key2': 'val2'}
for key,val in dict1.items():
print('{0:10}==>{1:10s}'.format(key,val))
'''
读取键盘输入:
Python 提供了 input() 内置函数从标准输入读入一行文本,默认的标准输入是键盘。
'''
'''
读写文件
open() 将会返回一个 file 对象
语法:open(filename, mode)
filename:包含了你要访问的文件名称的字符串值。
mode:决定了打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读(r)。
模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
'''
'''
f.read()
调用 f.read(size), 这将读取一定数目的数据, 然后作为字符串或字节对象返回。
size 是一个可选的数字类型的参数。 当 size 被忽略了或者为负, 那么该文件的所有内容都将被读取并且返回。
'''
f1 = open('16/test.txt','rb')
str = f1.read()
print(str.decode('utf-8'))
f1.close()
'''
f.readline()
f.readline() 会从文件中读取单独的一行。换行符为 '\n'。
f.readline() 如果返回一个空字符串, 说明已经读取到最后一行。
'''
f1 = open('16/test.txt','rb')
str = f1.readline()
print('第一行数据:'+str.decode('utf-8'))
str = f1.readline()
print('第二行数据:'+str.decode('utf-8'))
f1.close()
'''
f.readlines(sizehint) 将返回该文件中包含的所有行。
如果设置可选参数 sizehint, 则读取指定长度的字节, 并且将这些字节按行分割。
'''
f1 = open('16/test.txt','r',encoding='utf8')
str = f1.readlines()
print(str)
f1.close()
f1 = open('16/test.txt','r',encoding='utf8')
for line in f1:
print(line,end='')
f1.close()
print('')
'''
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
'''
f1 = open('16/test.txt','a',encoding='utf8')
f1.close()
'''
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
'''
f1 = open('16/test.txt','a',encoding='utf8')
print(f1.tell())
f1.close()
'''
f.seek()
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
seek(x,1) : 表示从当前位置往后移动x个字符
seek(-x,2): 表示从文件的结尾往前移动x个字符
'''
f1 = open('16/foo.txt','ab+')
f1.write(b'0123456789')
print(f1.seek(5,0))
print(f1.read(1))
print(f1.seek(5,1))
print(f1.read(1))
print(f1.seek(-3,2))
print(f1.read(1))
'''
f.close() 当你处理完一个文件后, 调用 f.close() 来关闭文件并释放系统的资源,如果尝试再调用该文件,则会抛出异常。
'''
'''
file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。
'''
f1 = open('16/foo.txt','wb')
print ("文件名为: ", f1.name)
f1.flush()
f1.close()
'''
file.fileno() 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。
'''
f1 = open('16/foo.txt','wb')
fno = f1.fileno();
print ("文件描述符为: ", fno)
f1.close()
'''
file.isatty() 如果文件连接到一个终端设备返回 True,否则返回 False。
'''
'''
file.truncate([size]) 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;
截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。
'''
'''
file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
'''
f1 = open('16/foo.txt','w',encoding='utf8')
list1 = ["python最受欢迎语言\n","python最受欢迎语言\n","python最受欢迎语言\n"]
f1.writelines(list1)
f1.close()