中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

四、文件操作與處理

一、文件處理介紹

成都創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的樂(lè)都網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1 什么是文件
    文件是操作系統(tǒng)為用戶(hù)/應(yīng)用程序提供的一種操作硬盤(pán)的抽象單位
2 為何要用文件
    用戶(hù)/應(yīng)用程序?qū)ξ募淖x寫(xiě)操作會(huì)由操作系統(tǒng)轉(zhuǎn)換成具體的硬盤(pán)操作
    所以用戶(hù)/應(yīng)用程序可以通過(guò)簡(jiǎn)單的讀\寫(xiě)文件來(lái)間接地控制復(fù)雜的硬盤(pán)的存取操作
    實(shí)現(xiàn)將內(nèi)存中的數(shù)據(jù)永久保存到硬盤(pán)中
    user=input('>>>>: ') #user="egon"
3 如何用文件
    文件操作的基本步驟:
        f=open(...) #打開(kāi)文件,拿到一個(gè)文件對(duì)象f,f就相當(dāng)于一個(gè)遙控器,可以向操作系統(tǒng)發(fā)送指令
        f.read() # 讀寫(xiě)文件,向操作系統(tǒng)發(fā)送讀寫(xiě)文件指令
        f.close() # 關(guān)閉文件,回收操作系統(tǒng)的資源
    上下文管理:
        with open(...) as f:
            pass

# 向操作系統(tǒng)發(fā)送請(qǐng)求,要求操作系統(tǒng)打開(kāi)文件
f=open(r'C:\Users\silence\PycharmProjects\day1\a.txt',encoding='utf-8')
# f的值是一個(gè)文件對(duì)象
print(f)
print(f.read())
# 向操作系統(tǒng)發(fā)送請(qǐng)求,要求操作系統(tǒng)關(guān)閉打開(kāi)的文件
# 強(qiáng)調(diào):一定要在程序結(jié)束前關(guān)閉打開(kāi)的文件
f.close()

# 上下文管理with

with open(r'C:\Users\silence\PycharmProjects\day1\a.txt','r',encoding='utf-8') as f:
    read=f.read()
    print(read)

# 字符串轉(zhuǎn)密碼
# 不能直接使用dict

1.py

with open('a.txt','rt',encoding='utf-8')as f :
    auth=f.read()
    d=eval(auth)
    print(d,type(d))
-----------------------------------
{'name': 's_jun'} <class 'dict'>

a.txt

{"name":"s_jun"}

二、文件操作

一 文件的打開(kāi)模式
    r: 只讀模式L(默認(rèn)的)
    w: 只寫(xiě)模式
    a: 只追加寫(xiě)模式

二 控制讀寫(xiě)文件單位的方式(必須與r\w\a連用)
    t : 文本模式(默認(rèn)的),一定要指定encoding參數(shù)
        優(yōu)點(diǎn): 操作系統(tǒng)會(huì)將硬盤(pán)中二進(jìn)制數(shù)字解碼成unicode然后返回
        強(qiáng)調(diào):只針對(duì)文本文件有效

    b: 二進(jìn)制模式,一定不能指定encoding參數(shù)
        優(yōu)點(diǎn):

a.txt

{"name":"s_jun"}

1.py

with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data,type(data))
--------------------------------------------------
{"name":"s_jun"} <class 'str'>    
# 圖片二進(jìn)制查看
with open('1.jpg',mode='rb',) as f:
    data=f.read()
    print(data,type(data))
---------------------------------------- 
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\...... <class 'bytes'>   

with open('a.txt',mode='rb',) as f:
    data=f.read()
    print(data,type(data))
    print(data.decode('utf-8'))
-----------------------------------
b'{"name":"s_jun"}' <class 'bytes'>
{"name":"s_jun"} 

with open('a.txt',mode='rt',encoding='utf-8') as f:
    data=f.read()
    print(data,type(data)) 
----------------------------------------------
{"name":"s_jun"} <class 'str'>

# r: 只讀模式L(默認(rèn)的)
# 1 當(dāng)文件不存時(shí),會(huì)報(bào)錯(cuò)
# 2 當(dāng)文件存在時(shí),文件指針指向文件的開(kāi)頭

with open('a.txt',mode='rt',encoding='utf-8') as f:
    res1=f.read()
    print('111===>',res1)
    res2=f.read()
    print('222===>',res2)
    print(f.read())
    print(f.readable())
    print(f.writable())
    print(f.readline())
    print(f.readline())
    for line in f:
        print(line)
    l=[]
    for line in f:
        l.append(line)
    print(l)
    print(f.readlines())
-------------------------------------------
111===> {"name":"s_jun"}
222===> 

True
False


[]
[]

二 w: 只寫(xiě)模式
# 1 當(dāng)文件不存時(shí),新建一個(gè)空文檔
# 2 當(dāng)文件存在時(shí),清空文件內(nèi)容,文件指針跑到文件的開(kāi)頭

with open('c.txt',mode='wt',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    f.write('你愁啥\n')
    f.write('瞅你咋地\n')
    f.write('1111\n2222\n333\n4444\n')
    info=['egon:123\n','alex:456\n','lxx:lxx123\n']
    for line in info:
        f.write(line)
    f.writelines(info)
------------------------------------------
False
True

c.txt

你愁啥
瞅你咋地
1111
2222
333
4444
egon:123
alex:456
lxx:lxx123
egon:123
alex:456
lxx:lxx123

with open('c.txt',mode='rb') as f:
    print(f.read())
with open('c.txt',mode='wb') as f:
    f.write('哈哈哈\n'.encode('utf-8'))
    f.write('你愁啥\n'.encode('utf-8'))
    f.write('瞅你咋地\n'.encode('utf-8'))
---------------------------------------------------
b'\xe5\x93\x88\xe5\x93\x88\xe5\...... '

c.txt

哈哈哈
你愁啥
瞅你咋地
 (\n,回車(chē))

# 三 a: 只追加寫(xiě)模式
# 1 當(dāng)文件不存時(shí),新建一個(gè)空文檔,文件指針跑到文件的末尾
# 2 當(dāng)文件存在時(shí),文件指針跑到文件的末尾

with open('c.txt',mode='at',encoding='utf-8') as f:
    print(f.readable())
    print(f.writable())
    f.write('虎老師:123\n')
----------------------------------------------------
False
True

c.txt

哈哈哈
你愁啥
瞅你咋地
虎老師:123
 (\n,回車(chē))

# 在文件打開(kāi)不關(guān)閉的情況下,連續(xù)的寫(xiě)入,下一次寫(xiě)入一定是基于上一次寫(xiě)入指針的位置而繼續(xù)的

with open('d.txt',mode='wt',encoding='utf-8') as f:
    f.write('虎老師1:123\n')
    f.write('虎老師2:123\n')
    f.write('虎老師3:123\n')

d.txt

虎老師1:123
虎老師2:123
虎老師3:123
 (\n,回車(chē))

-----------------------------------------------------------------------

with open('d.txt',mode='wt',encoding='utf-8') as f:
    f.write('虎老師4:123\n')

d.txt

虎老師4:123
(\n,回車(chē))

---------------------------------------------------------------------------

with open('d.txt',mode='at',encoding='utf-8') as f:
    f.write('虎老師1:123\n')
    f.write('虎老師2:123\n')
    f.write('虎老師3:123\n')

d.txt

虎老師4:123
虎老師1:123
虎老師2:123
虎老師3:123

------------------------------------------

with open('d.txt',mode='at',encoding='utf-8') as f:
    f.write('虎老師4:123\n')

d.txt

虎老師4:123
虎老師1:123
虎老師2:123
虎老師3:123
虎老師4:123
(\n,回車(chē))

工具代碼:

類(lèi)型Linux cp 工具

使用:

python .\copyTool.py a.txt aa.txt

# 系統(tǒng)提供的模塊  現(xiàn)在用它來(lái)接收用戶(hù)從cmd中輸入的參數(shù)
import  sys

# argv 返回一個(gè)數(shù)組 里面是cmd中接收的參數(shù) 空格分隔
print(sys.argv)



src = sys.argv[1]
dis = sys.argv[2]
if src == dis:
    print("源文件與目標(biāo)文件相同 再見(jiàn)")

# 以讀取二進(jìn)制的模式打開(kāi)源文件
srcf = open(src, "rb")
# 以寫(xiě)入二進(jìn)制的模式打開(kāi)目標(biāo)文件
disf = open(dis, "wb")

# 從源文件讀取 寫(xiě)入到目標(biāo)文件
for line in srcf:
    disf.write(line)
# 關(guān)閉資源
srcf.close()
disf.close()

登錄注冊(cè)購(gòu)物車(chē)

users = []
# current_user 當(dāng)前用戶(hù)
current_user = ""
# 注冊(cè)用戶(hù)
while True:
    name = input("請(qǐng)輸入用戶(hù)名:")
    # 循環(huán)取出所有姓名對(duì)比
    tag = True
    for i in users:
        if i["name"] == name:
            print("用戶(hù)名重復(fù) 請(qǐng)重試:")
            tag = False
            break
    if False == tag:
        continue

    password = input("請(qǐng)輸入密碼:")
    confirm_password = input("請(qǐng)?jiān)俅屋斎朊艽a:")
    if password != confirm_password:
        print("兩次密碼不相同")
        continue
    else:
        users.append({"name": name, "pwd": password})
        print("注冊(cè)成功 請(qǐng)登陸")
        current_user = name
        break

name = input("請(qǐng)輸入用戶(hù)名:")
pwd = input("請(qǐng)輸入密碼:")
for user_dic in users:
    if user_dic["name"] == name:
        if user_dic["pwd"] == pwd:
            print("歡迎你:%s" % name)

            break

select = input("""
請(qǐng)選擇:
1.查看商品列表
2.修改密碼            
""")
# 商品列表
product_list = [['Iphone7', 5800],
                ['Coffee', 30],
                ['疙瘩湯', 10],
                ['Python Book', 99],
                ['Bike', 199],
                ['ViVo X9', 2499],
                ]

# 創(chuàng)建一個(gè)字典用于保存購(gòu)物車(chē)數(shù)據(jù)
product_dict = {}
if select == "1":
    while True:
        for i in product_list:
            print("%d %s" % (product_list.index(i) + 1, i))
        text = input("請(qǐng)輸入序號(hào):")
        if text == "quit":
            break
        num = int(text)
        if num > 0 and num < 7:
            print("加入購(gòu)物車(chē)")
            product = product_list[num - 1]
            # 如果商品已經(jīng)存在購(gòu)物車(chē)中就更新數(shù)量和價(jià)格 否則加進(jìn)去
            if product[0] in product_dict:
                dict1 = product_dict[product[0]]
                # 更新價(jià)格
                dict1["price"] = dict1["price"] + product[1]
                # 更新數(shù)量
                dict1["count"] = dict1["count"] + 1
            else:
                product_dict[product[0]] = {"name": product[0], "price": product[1], "count": 1}
        else:
            print("序號(hào)不存在")
elif select == "2":
    tag1 = True
    while tag1:
        oldpwd = input("請(qǐng)輸入舊密碼:")
        for u in users:
            if u["name"] == current_user:
                if oldpwd == u["pwd"]:
                    newpwd = input("請(qǐng)輸入新密碼:")
                    if newpwd == "quit":
                        tag1 = False
                        break
                    u["pwd"] = newpwd
                    tag1 = False
                    break
                else:
                    print("舊密碼不正確")
    print(users)
else:
    print("輸入錯(cuò)誤:")

print(product_dict)

冒泡排序

data = [3, 2, 1, 4, 5]
# 排序有兩種順序 從大到小  從小到大
# 從大到小
# 核心思想 依次取出兩個(gè)相鄰元素  比較大小 如果是從大到小
#  a b   a < b  如果前者小于后者就交換位置
"""
   第一圈   5  2  1  3  4    4
   第二圈   5  2  3  4  1    3
   第三圈   5  3  4  2  1    2
   第四圈   5  4  3  2  1    1 
   
   
    結(jié)論每一圈比較的次數(shù) 是需要比較的元素個(gè)數(shù)減去1
    每一圈比較完畢后都會(huì)產(chǎn)生一個(gè)具備順序的元素  在下一圈比較的時(shí)候 這個(gè)有順序的元素就不用在比了
    比較的圈數(shù)為元素個(gè)數(shù)減1
    
    選擇排序 每次找出一個(gè)最大值放到列表的前面或后面
    
"""
# 外層控制比較圈數(shù)
for i in range(len(data)-1):
    for j in range(len(data)-1-i):
        if data[j] > data[j+1]:
            data[j], data[j+1] = data[j+1], data[j]
print(data)

三級(jí)菜單

menu={
    "中國(guó)":{
        "湖北":{
            "武漢":{
                "A":{},
                "B":{},
                "C":{},
            },
        },
    },
    "山西":{
        "太原":{
            "xx區(qū)":{
                "1":{},
                "2":{},
                "3":{},
            },
        },
    },
    "青銅":{
        "黃金":{
            "王者":{
                "x":{},
                "y":{},
                "z":{},
            },
        },
    },
     }
tag=True
while tag:
    menu1=menu
    for k in menu1:
        print(k)
    choice1=input("一: ").strip()
    if choice1=='b':
        break
    if choice1=='q':
        tag=False
    if choice1 not in menu1:
        continue
    while tag:
        menu2=menu1[choice1]
        for key in menu2:
            print(key)
        choice2=input("二: ").strip()
        if choice2=="b":
            break
        if choice2=='q':
            tag=False
        if choice2 not in menu2:
            continue
        while tag:
            menu3=menu2[choice2]
            for key in menu3:
                print(key)
            choice3=input("三:").strip()
            if choice3=='b':
                break
            if choice3=='q':
                tag=False
            if choice3 not in menu3:
                continue
            while tag:
                menu4=menu3[choice3]
                for k in menu4:
                    print(k)
                choice4=input("四:").strip()
                if choice4=='b':
                    break
                if choice4=="q":
                    tag=False
                if choice4 not  in menu4:
                    continue

金字塔

n=5
for c in range(1,n+1):
    for i in range(n-c):
        print(' ',end='') 
    for j in range(2*c-1):
        print('*',end='') 
    print()
n=1
while n <= 8:
    print(('x'* n).center(17,' '))
    n+=2
n=1
for i in range(0,10):
    if i%2==1:
        print(("x"*i).center(20,' '))

99乘法口訣表

for i in range(1,10):
    for j in range(1,i+1):
        print("{}*{}={}\t".format(i,j,i*j),end="")
    print()


網(wǎng)站題目:四、文件操作與處理
標(biāo)題鏈接:http://www.rwnh.cn/article2/psjsoc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、動(dòng)態(tài)網(wǎng)站網(wǎng)站制作、搜索引擎優(yōu)化、企業(yè)建站定制開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
同仁县| 佛坪县| 罗甸县| 手游| 沙坪坝区| 芦山县| 开平市| 朝阳区| 天峨县| 图们市| 翁源县| 绥滨县| 伊川县| 桐柏县| 涿鹿县| 武邑县| 叶城县| 洛浦县| 濉溪县| 新邵县| 沂水县| 沛县| 穆棱市| 吉水县| 永嘉县| 安平县| 襄汾县| 榕江县| 南平市| 饶平县| 苏州市| 宝丰县| 乌拉特中旗| 九台市| 邵阳县| 安康市| 安庆市| 繁昌县| 泸溪县| 桂林市| 兴山县|