Python——文件操作I/O和Json数据

一. 文件操作I/O

1.读取文件

使用open()打开文件时必须指定打开文件所要做的操作(读,写,追加),如果不指定操作类型,则默认是读取文件,而读取文件时不能像文件中写入。

r  表示只读取
with open('pi_digits.txt') as file_object:
	content=file_object.read()
print(content)
f=open('pi_digits.txt','r')
f.close()

2.删除字符串末尾的空白

with open('pi_digits.txt') as file_object:
	content=file_object.read()
print(content.strip())
with open('pi_digits.txt') as file_object:
	content=file_object.read()
print(content.rstrip())

3.逐行读取文件

filename='pi_digits.txt'
with open(filename) as file_object:
	for i in file_object:
		print(line)

4.写入文件

w 表示是可写的,使用w来写入文件时,如果文件不存在会创建文件,如果文件存在则会截断文件即删除文件中的所有内容。
r+ 即可读又可写,文件不存在会报错。

filename='hy.txt'
with open(filename,'w') as file_object:
	file_object.write("I love programming.")
filename='hy.txt'
with open(filename,'w') as file_object:
	file_object.write("I love programming.")
	file_object.write("I love creating new games.")

5.附加到文件

a 表示追加内容,如果文件不存在会创建文件,如果文件存在则会向文件中追加内容。

filename='hy.txt'
with open(filename,'a') as file_object:
	file_object.write("I love programming.\n")
	file_object.write("I love creating new games.\n")

6.特殊操作符

(1)x  用来新建文件,如果文件不存在则创建,存在则报错。
(2) + 为操作符增加功能
r+
w+
a+

二.Json数据

1.Json的使用

(1) json.dump()
json.dump() 表示写入一个文件,即存储数据。json.dump() 接受两个实参:要存储数据,以及可用于存储数据的文件对象。

import json
num=[2,3,5,7,9,23,11]
filename='num.json'
with open(filename,'w') as f:
json.dump(num,f)

(2) json.load()
json.load() 表示从文件中读取,使用json.load()可将列表读取到内存中。

import json
num=[2,3,5,7,9,23,11]
filename='num.json'
with open(filename,'w') as f:
	num=json.laod(f)
print(num)

(3) json.dumps()
json.dumps() 表示写入字符串变量。

import json
s2='["info",{"name":"juran","age":23}]'
p=json.dumps(s2)
print(p)

(4) json.loads()
json.loads() 表示从字符串变量读取。

import json
s1=['info',{'name':'juran','age':23}]
a=json.loads(s1)
print(a)

2.保存和读取用户生成的数据

import json
username=input("What is yuor name?")
filename=username.json
with open(filename,'w') as f:
	json.dump(usernane,f)
	print(f"We'll remeber you.{username}!")

三.OS模块简介

1.常用的OS模块命令

(1)os.name
作用:判断目前正在使用的平台,并给出操作系统的名字。

(2)os.getcwd()
作用:获取当前工作的目录。

(3)os.listdir(path)
作用:列出path目录下所有的文件和目录名。path参数可以忽略。

(4)os.remove(path)
作用:删除path指定的文件,该参数不能省略。

(5)os.rmdir(path)
作用:删除path指定目录,该参数不能省略。

(6)os.mkdir(path)
作用:创建path指定的目录,该参数不能省略。

(7)os.path.isfile(path)
作用:判断指定对象是否为文件。是则返回True,否则返回False。

(8)os.path.isdir(path)
作用:判断指定对象是否为目录。是则返回True,否则返回False。

(9)os.path.exist(path)
作用:检验指定的对象是否存在。是则返回True,否则返回False。

(10)os.path.split(path)
作用:返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体。

(11)os.system(cmd)
作用:执行shell命令。返回值是脚本的退出状态,0代表成功,1代表不成功。

(12)os.chdir(path)
作用:'change dir’改变目录到指定目录。

(13)os.path.getsize()
作用:获得文件的大小,如果为目录,返回0。

(14)os.path.abspath()
作用:获得绝对路径。

(15)os.path.join(path, name)
作用:连接目录和文件名,与os.path.split(path)相对。

(16)os.path.basename(path)
作用:返回文件名。

(17) os.path.dirname(path)
作用:返回文件路径。

四.日常算法题

1.排序题

输入三个整数x,y,z,请把这三个数由小到大输出。

n=input().split()
m=[int(i) for i  in n]
m.sort()
print(m)

2.组合题

有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

sum=0
n=[1,2,3,4]
for i in n:
    for j in n:
        for z in n:
            if i!=j and j!=z and z!=i:
                sum+=1
                print(i,j,z)
print(sum)

3.公司奖金

企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?

i=int(input("请输入利润为多少万元:"))
if i<=10:
    print("奖金为:",i*1.1)
if 10<i<=20:
    print("奖金为:",10*1.1+(i-10)*1.075)
if 20<i<=40:
    print("奖金为:",10*1.1+10*1.075+(i-20)*1.05)
if 40<i<=60:
    print("奖金为:", 10 * 1.1 + 10 * 1.075 +  20 * 1.05+(i-40)*1.03)
if 60<i<=100:
    print("奖金为:", 10 * 1.1 + 10 * 1.075 + 20 * 1.05 + 40 * 1.03+(i-60)*1.015)
if i>100:
    print("奖金为:", 10 * 1.1 + 10 * 1.075 + 20 * 1.05 + 40 * 1.03 +  60 * 1.015+(i-100)*1.01)

4.求数

一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

for i in range(85):
    for j in range(85):
        if i%2==0 and j%2==0 or i%2!=0 and j%2!=0:
            if i**2-j**2==168:
                x=j**2-100
print(x)

5.九九乘法表for i in range(1,10):

for i in range(1,10):
	for j in range(1,1+i):
		print(f'{i}*{j}=={i*j}',end=' ')
	print()

6.复制

list=[1,2,3,4]
list1=list.copy()
print(list1)

7.斐波那契数列

def fbi(n):
	if n==1 or n==2:
		return 1
	else:
		return fbi(n-1)+fbi(n-2)
n=int(input())
print(fbi(n))

8.暂停

import time
time.sleep(1)
for i in range(1,10):
	for j in range(1,1+i):
		print(f'{i}*{j}=={i*j}',end=' ')
	print()

9.时间格式化

import time
time_string=time.strftime("%Y-%m-%d  %H:%M:%S")
print(time_string)
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值