欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python输入输出与文件操作

程序员文章站 2024-03-22 21:51:58
...

输入输出与文件:
1、输入输出
输入
Python提供了input()内置函数从标准输入读入一行文本。
input()函数也可以接受一个Python表达式作为输入,并将运算结果返回。
input()函数的返回值永远是字符串,返回int型时需要使用int(input())。
eval()函数用来执行一个字符串表达式,并返回值。
输出
print()
格式化输出:
%o——oct 八进制
%d——dec 十进制
%x——hex 十六进制

print('%o'%20)
24
print('%d'%20)
20	
print('%x'%20)
14

浮点数的输出:(1)格式化输出

print('%f'%1.11)#默认保留6位小数
1.110000
print('%.1f'%1.11)#取一位小数
1.1
print('%e'%1.11)#默认6位小数,用科学计数法
1.110000e+00
print('%.3e'%1.11)#取3位小数,用科学计数法
1.110e+00

(2)内置round()函数
round(number[,ndights])
参数:
numbers-数字表达式
ndights-从小数点到最后四舍五入的位数,默认为0。
当只有一个参数时,返回一个整数,而且是最靠近的整数,类似于四舍五入。
当碰到.5的情况时,如果要取舍的位数前是奇数,则直接舍弃,如果是偶数则向上取舍。
字符串输出
%s
%10s——右对齐,占位符10位
%.2s——截取2位字符串
2、文件操作
文件编码:
ASCll码:单字节编码,两个字节表示一个汉字
Unicode:两个字节表示一个字符
UTF-8:可变长度的Unicode的实现方式
使用1~4个字节表示一个符号,根据不同的符号而变化字节长度
文件类型:文本文件,二进制文件
操作:
打开文件:建立磁盘上的文件与程序中的对象相关联
操作:读取,写入,定位,追加,计算等
关闭文件:切段文件与程序联系
打开文件
Python通过解释器内置的open()函数打开一个文件,格式如下:

<变量名>=open(<文件名>,<打开模式>)

7种打开模式:
r:读模式(默认模式,可省略)
w:写模式,如果文件已存在,先清空原有模式;如果不存在,创建新文件
x:写模式,创建新文件
a:追加模式,不覆盖文件原有内容
b:二进制模式
t:文本模式(默认模式,可省略)
+:读、写模式
4种文件读取方法:
.readall():读入整个文件内容,返回一个字符串或字节流
.read(size=-1):从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或字节流
.readline(size=-1):从文件中读入一行内容,如果给出参数,读入前size长度的字符串或字节流
.readlines(hint=-1)从文件中读入所有行,以每行为元素形成一个列表,如果给出参数,读入hint行
文件写入:
.write(s):向文件写入一个字符串或字节流
.writelines(lines):将一个元素为字符串的列表写入文件
.seek(offset):0:文件开头 1:当前位置 2:文件结尾
上下文管理语句with
在实际开发中,读写文件应优先考虑上下文管理语句with。关键字with可以自动管理资源,不论因为什么原因跳出with块,总能保证文件被正确关闭。除了用于文件操作,with关键字还可以用于数据库连接、网络连接或类似场合。
文件操作示例:
Python输入输出与文件操作

编写程序将电话簿TeleAddressBook.txt和电子邮件EmailAddressBook.txt合并为一个完整的AddressBook.txt

with open(r'C:\Users\孙昊\Desktop\学习\读芯术\第三部分 Python编程进阶\code 1、输入输出与文件操作\teleAddressBook.txt','rt') as ftele1:
    with open(r'C:\Users\孙昊\Desktop\学习\读芯术\第三部分 Python编程进阶\code 1、输入输出与文件操作\emailAddressBook.txt','rt') as ftele2:
        ftele1.readline()
        ftele2.readline()
        lines1=ftele1.readlines()
        lines2=ftele2.readlines()
        list1_name=[]
        list1_tele=[]
        list2_name=[]
        list2_email=[]
        
        for line in lines1:
            elements=line.split()
            list1_name.append(elements[0])
            list1_tele.append(elements[1])
        
        for line in lines2:
            elements=line.split()
            list2_name.append(elements[0])
            list2_email.append(elements[1])
            
        #生成新数据(表头)
        lines=[]
        lines.append('姓名\t电话\t\t邮箱\n')
        for i in range(len(list1_name)):
            s=''
            if list1_name[i] in list2_name:
                j=list2_name.index(list1_name[i])
                s='\t'.join([list1_name[i],list1_tele[i],list2_email[j]])
                s+='\n'
            else:
                s='\t'.join([list1_name[i],list1_tele[i],'   ----   '])
                s+='\n'
            lines.append(s)
        for i in range(len(list2_name)):
            s=''
            if list2_name[i] in list1_name:
                s='\t'.join([list1_name[i],'   ----   ',list2_email[j]])
                s+='\n'
                lines.append(s)
        ftele3=open(r'C:\Users\孙昊\Desktop\学习\读芯术\第三部分 Python编程进阶\code 1、输入输出与文件操作\addressbook.txt','w')
        ftele3.writelines(lines)
ftele3.close()
ftele2.close()
ftele1.close()
print('操作完成')